Я получаю это исключение ниже в моем коде селена, когда я запускаю в нем свои jenkins, которые работают через докер.
Это началось, когда я использовал класс робота для импорта файла для одного из моих сценариев. Когда я запустил свой код в Jenkins, он дает следующее исключение.
Exception:
java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at sun.awt.HeadlessToolkit.getSystemClipboard(HeadlessToolkit.java:309)
at PageObjectRep.QuickHlr.Click_on_Browser(QuickHlr.java:119)
at stepDefinations.HLR_LookUp.clickOnBrowser(HLR_LookUp.java:70)
at ✽.And Click on browser(Smoke.feature:178)
Примечание. Дженкинс работает в докере. Я заранее ценю вашу помощь.
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel,null);
System.out.println("selection" +sel);
// Wait for 5 seconds
Thread.sleep(5000);
System.out.println("Browse button clicked");
// Create object of Robot class
Robot robot = new Robot();
Thread.sleep(1000);
// Press Enter
robot.keyPress(KeyEvent.VK_ENTER);
// Release Enter
robot.keyRelease(KeyEvent.VK_ENTER);
// Press CTRL+V
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
// Release CTRL+V
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyRelease(KeyEvent.VK_V);
Thread.sleep(1000);
//Press Enter
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
}




Вы не можете запустить Java-код GUI (графический интерфейс пользователя) в операционной системе без пользовательского интерфейса, такого как серверы, целью которых является запуск приложений в фоновом режиме. Например, вам нужен рабочий стол.
Вы можете разделить Java на следующие категории:
Java SE = стандартная версия. Обычно используется для приложений GUI или DESKTOP с такими классами, как JFrame, Robot, Toolkit и т. д.

Кроме того, он содержит множество библиотек и API, которые должен изучить любой Java-программист (java.lang, java.io, java.math, java.net, java.util и т. д.), И они используются в следующей категории.
Для запуска этого приложения требуется оперативная система с пользовательским интерфейсом. Если вы запустите эти приложения в tomcat, на таких серверах, как jenkins, widfly и т. д., Используя ubuntu / debian, solaris и т. д., Некоторые части не будут работать из-за отсутствия зависимостей, которые есть только в операционных системах с пользовательским интерфейсом. Например, java.awt.Robot может перемещать мышь в x.y, но на сервере оболочки нет мыши.
Java EE = Enterprise Edition. Платформа Java (Enterprise Edition) используется для разработки распределенных систем, таких как доступ к базе данных (JDBC, JPA), удаленный вызов методов (RMI), обмен сообщениями (JMS), веб-службы, обработка XML, и определяет стандартные API-интерфейсы для Enterprise JavaBeans, сервлетов. , портлеты, страницы сервера Java и т. д.

В настоящее время эта категория чаще всего используется для разработки корпоративных или корпоративных систем: Apis rest, интеграции, безопасность, микросервисы и т. д. Также используется для разработки серверов, платформ или библиотек, таких как: Tomcat, Jenkins, Pentaho, Mule ESB, Selenium, Spring. , и т.д
Java ME = Micro Edition. Это платформа для разработки приложений для мобильных устройств. Я думаю, что сейчас это устарело из-за Android и других инструментов.
Решение: не использовать Java-код рабочего стола в Java-коде сервера. Вы используете класс Robot для автоматизации чего-либо на веб-странице или в настольном приложении?
Да, но не знаю, какой еще подход мне следует предпринять для решения этой проблемы.
Расскажите мне о ваших требованиях, чтобы помочь вам. Ваш подход с использованием класса Robot не рекомендуется для веб-приложений. Например, вы можете использовать селен.
В основном я пытаюсь выполнить загрузку файла в моей автоматизации селена с помощью удаленного драйвера. Не удалось сделать из селена, поэтому я использовал класс роботов.
Выгрузка файла возможна с использованием селена. Отметьте это sqa.stackexchange.com/a/12852
@Richardsz вышеуказанное решение не работает для меня. Любая другая работа?
Дай попробую в эти выходные;)
JRichardsz Конечно.
Итак, каково было бы решение этой проблемы?