我的selenium代码没有运行。一直向我抛出以下错误:
Exception in thread "main" org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: 'unknown', revision: 'unknown', time: 'unknown'
System info: host: 'SLAP129', ip: '192.168.4.218', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_74'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:658)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:250)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:236)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:137)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:191)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:108)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:104)
at PractiseSession1.OpenBrowser(PractiseSession1.java:35)
at PractiseSession1.main(PractiseSession1.java:16)
Caused by: java.lang.NullPointerException
at org.openqa.selenium.remote.service.DriverService.waitUntilAvailable(DriverService.java:192)
at org.openqa.selenium.firefox.XpiDriverService.start(XpiDriverService.java:94)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:78)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637)
... 8 more
firefox版本:53.0.3(32位)selenium版本:selenium-java-3.4.0我使用的是eclipse luna,我的机器是windows7(64位)。我已经阅读了所有的帮助查询,但找不到解决方案。以下是我的java代码:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
public class PractiseSession1
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
WebDriver driver = null;
String URL="http://www.google.com";
//System.out.println("Application title is =============");
PractiseSession1 ade= new PractiseSession1();
ade.OpenBrowser(driver);
ade.GetPage(URL, driver);
ade.quitbrowser(driver);
}
private void quitbrowser(WebDriver driver)
{
driver.quit();
}
private void GetPage(String URL, WebDriver driver)
{
driver.get(URL);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
private void OpenBrowser(WebDriver driver)
{
System.setProperty("webdriver.firefox.marionette", "<Geckodriver
path>geckodriver.exe");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
driver= new FirefoxDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}
}
2条答案
按热度按时间chhkpiq41#
你应该替换
具有
以便使用所需的功能运行测试。
唯一的问题是,它可能无法与3.4.0一起工作,因为默认超时值是reduce,现在可能太短了。
knpiaxh12#
您必须在代码中考虑以下几个因素:
您已经通过创建了同一类的对象
PractiseSession1 ade= new PractiseSession1();
使用这个物体ade
调用不同的方法OpenBrowser()
,GetPage()
以及quitbrowser()
. 这些方法执行的功能可以通过内部的一行代码来实现main()
也不需要创建任何对象。当按照w3c标准使用selenium 3.x时,要使用geckodriver.exe,我们需要使用
webdriver.gecko.driver
而不是webdriver.firefox.marionette
在System.setProperty
线路。当你提到
System.setProperty
您需要提供geckodriver.exe的绝对路径,如下所示:一旦你提到
ImplicitlyWait
,它将在程序的整个执行过程中保留。您可以考虑删除多次提及。driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
整个代码可以用6行代码编写,如下所示:详细了解
webdriver.firefox.marionette
进化为webdriver.gecko.driver
你可以看这个地方。