在 Selenium 中使用 PhantomJS 时出错:NoSuchMethodError org/openqa/selenium/browserlaunchers/Proxies
Error while using PhantomJS in Selenium: NoSuchMethodError org/openqa/selenium/browserlaunchers/Proxies
我正在尝试使用 PhantomJS 运行 非常简单的 Java 自动化测试用例。我正在使用以下版本:
- selenium-server-standalone3.8.1.jar
- Windows
的 PhantomJS 2.1.1 版本
- PhantomJSdriver.jar 1.1。版本
我的代码所需的功能和驱动程序启动如下:
DesiredCapabilities caps = new DesiredCapabilities();
((DesiredCapabilities) caps).setJavascriptEnabled(true);
((DesiredCapabilities) caps).setCapability("takesScreenshot", true);
((DesiredCapabilities) caps).setCapability(
PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
"C:/Program Files/phantomjs-2.1.1-windows/bin/phantomjs.exe" //java web start / jnpl file...
// "/Controller/phantomjs.exe"
);
//SET enabled javascript for php script on WEB page to transform it to picture:
caps.setJavascriptEnabled(true);
String [] phantomJsArgs = {"--web-security=no", "--ignore-ssl-errors=yes"};
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, phantomJsArgs);
//CREATING WEB driver
WebDriver driver = new PhantomJSDriver(caps);
但是,我得到这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError:
org/openqa/selenium/browserlaunchers/Proxies at
org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService(PhantomJSDriverService.java:178)
at
org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:99)
at HD_PhantomJSTest1.main(HD_PhantomJSTest1.java:33) Caused by:
java.lang.ClassNotFoundException:
org.openqa.selenium.browserlaunchers.Proxies at
java.net.URLClassLoader.run(URLClassLoader.java:372) at
java.net.URLClassLoader.run(URLClassLoader.java:361) at
java.security.AccessController.doPrivileged(Native Method) at
java.net.URLClassLoader.findClass(URLClassLoader.java:360) at
java.lang.ClassLoader.loadClass(ClassLoader.java:424) at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at
java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 3 more
java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError
当 Java 虚拟机无法在 运行 时间找到特定的 class 时观察到在编译时可用。
例如,如果我们有一个来自 class 的方法调用或访问 Class 的任何静态成员,并且 class 在 运行 期间不可用-time 然后 JVM 将抛出 java.lang.NoClassDefFoundError
.
根据您的 Test Bed
信息,我不确定是否包含 PhantomJSdriver.jar 1.1. version
。 PhantomJS
的当前实现不需要任何额外的 jar。相关 Selenium JARs
解析所需的依赖项。所以你可以删除 PhantomJSdriver.jar 1.1. version
.
除此之外,我在您的代码中没有看到任何此类错误。然而,经过一些代码格式化后,我用我的配置执行了你的代码,结果是 SUCCESS
如下:
@Test
public void verifyFacebookTitle()
{
DesiredCapabilities caps = new DesiredCapabilities();
((DesiredCapabilities) caps).setJavascriptEnabled(true);
((DesiredCapabilities) caps).setCapability("takesScreenshot", true);
((DesiredCapabilities) caps).setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C:\Utility\phantomjs-2.1.1-windows\bin\phantomjs.exe");
caps.setJavascriptEnabled(true);
String [] phantomJsArgs = {"--web-security=no", "--ignore-ssl-errors=yes"};
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, phantomJsArgs);
WebDriver driver = new PhantomJSDriver(caps);
driver.get("https://www.facebook.com/");
System.out.println(driver.getTitle());
driver.quit();
}
我的控制台输出:
INFO: Detected dialect: OSS
Facebook – log in or sign up
[INFO - 2017-12-06T08:24:22.972Z] ShutdownReqHand - _handle - About to shutdown
PASSED: verifyFacebookTitle
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================
我正在尝试使用 PhantomJS 运行 非常简单的 Java 自动化测试用例。我正在使用以下版本:
- selenium-server-standalone3.8.1.jar
- Windows 的 PhantomJS 2.1.1 版本
- PhantomJSdriver.jar 1.1。版本
我的代码所需的功能和驱动程序启动如下:
DesiredCapabilities caps = new DesiredCapabilities();
((DesiredCapabilities) caps).setJavascriptEnabled(true);
((DesiredCapabilities) caps).setCapability("takesScreenshot", true);
((DesiredCapabilities) caps).setCapability(
PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,
"C:/Program Files/phantomjs-2.1.1-windows/bin/phantomjs.exe" //java web start / jnpl file...
// "/Controller/phantomjs.exe"
);
//SET enabled javascript for php script on WEB page to transform it to picture:
caps.setJavascriptEnabled(true);
String [] phantomJsArgs = {"--web-security=no", "--ignore-ssl-errors=yes"};
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, phantomJsArgs);
//CREATING WEB driver
WebDriver driver = new PhantomJSDriver(caps);
但是,我得到这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/browserlaunchers/Proxies at org.openqa.selenium.phantomjs.PhantomJSDriverService.createDefaultService(PhantomJSDriverService.java:178) at org.openqa.selenium.phantomjs.PhantomJSDriver.(PhantomJSDriver.java:99) at HD_PhantomJSTest1.main(HD_PhantomJSTest1.java:33) Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.browserlaunchers.Proxies at java.net.URLClassLoader.run(URLClassLoader.java:372) at java.net.URLClassLoader.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 3 more
java.lang.NoClassDefFoundError
java.lang.NoClassDefFoundError
当 Java 虚拟机无法在 运行 时间找到特定的 class 时观察到在编译时可用。
例如,如果我们有一个来自 class 的方法调用或访问 Class 的任何静态成员,并且 class 在 运行 期间不可用-time 然后 JVM 将抛出 java.lang.NoClassDefFoundError
.
根据您的 Test Bed
信息,我不确定是否包含 PhantomJSdriver.jar 1.1. version
。 PhantomJS
的当前实现不需要任何额外的 jar。相关 Selenium JARs
解析所需的依赖项。所以你可以删除 PhantomJSdriver.jar 1.1. version
.
除此之外,我在您的代码中没有看到任何此类错误。然而,经过一些代码格式化后,我用我的配置执行了你的代码,结果是 SUCCESS
如下:
@Test
public void verifyFacebookTitle()
{
DesiredCapabilities caps = new DesiredCapabilities();
((DesiredCapabilities) caps).setJavascriptEnabled(true);
((DesiredCapabilities) caps).setCapability("takesScreenshot", true);
((DesiredCapabilities) caps).setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "C:\Utility\phantomjs-2.1.1-windows\bin\phantomjs.exe");
caps.setJavascriptEnabled(true);
String [] phantomJsArgs = {"--web-security=no", "--ignore-ssl-errors=yes"};
caps.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, phantomJsArgs);
WebDriver driver = new PhantomJSDriver(caps);
driver.get("https://www.facebook.com/");
System.out.println(driver.getTitle());
driver.quit();
}
我的控制台输出:
INFO: Detected dialect: OSS
Facebook – log in or sign up
[INFO - 2017-12-06T08:24:22.972Z] ShutdownReqHand - _handle - About to shutdown
PASSED: verifyFacebookTitle
===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================