当我在通过docker运行的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)
注意:Jenkins在docker中运行。 非常感谢您的帮助。
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);
}
答案 0 :(得分:1)
如果没有用户界面(如目标在后台模式下运行应用程序的服务器),则无法在操作系统中运行GUI(图形用户界面)Java代码。例如,您需要一个台式机。
您可以将Java划分为以下类别:
Java SE = Standard Edition。通常用于具有JFrame,Robot,Toolkit等类的GUI或DESKTOP应用程序。
还包含许多Java程序员应学习的库和API(java.lang,java.io,java.math,java.net,java.util等),并在下一个类别。
要运行此应用程序,需要具有用户界面的操作系统。如果您在Tomcat中,使用ubuntu / debian,solaris等在jenkins,widfly等服务器中运行此应用程序,则由于缺少仅用户界面操作系统具有的依赖关系,某些部分将无法工作。例如, java.awt.Robot 可以将鼠标移到x.y,但是在Shell服务器中没有鼠标。
Java EE =企业版。 Java平台(企业版)用于开发分布式系统,例如数据库访问(JDBC,JPA),远程方法调用(RMI),消息传递(JMS), Web服务,XML处理,并为Enterprise JavaBean,Servlet,Portlet,Java Server Pages等定义了标准API。
当前,此类别最常用于企业或公司的系统开发:Apis rest,集成,安全性,微服务等。还用于开发服务器,平台或库,例如:Tomcat,Jenkins,Pentaho,Mule ESB,硒,春天等
Java ME = Micro Edition 。这是用于开发移动设备应用程序的平台。我认为由于Android和其他工具,现在已不建议使用。