org.openqa.selenium.remote.unreachablebrowserexception:无法启动新会话可能的原因是远程服务器的地址无效

yqkkidmi  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(335)

我的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);
}
}
chhkpiq4

chhkpiq41#

你应该替换

driver = new FirefoxDriver();

具有

driver = new FirefoxDriver(capabilities);

以便使用所需的功能运行测试。
唯一的问题是,它可能无法与3.4.0一起工作,因为默认超时值是reduce,现在可能太短了。

knpiaxh1

knpiaxh12#

您必须在代码中考虑以下几个因素:
您已经通过创建了同一类的对象 PractiseSession1 ade= new PractiseSession1(); 使用这个物体 ade 调用不同的方法 OpenBrowser() , GetPage() 以及 quitbrowser() . 这些方法执行的功能可以通过内部的一行代码来实现 main() 也不需要创建任何对象。
当按照w3c标准使用selenium 3.x时,要使用geckodriver.exe,我们需要使用 webdriver.gecko.driver 而不是 webdriver.firefox.marionetteSystem.setProperty 线路。
当你提到 System.setProperty 您需要提供geckodriver.exe的绝对路径,如下所示:

System.setProperty("webdriver.gecko.driver", "C:\\your_directory\\geckodriver.exe");

一旦你提到 ImplicitlyWait ,它将在程序的整个执行过程中保留。您可以考虑删除多次提及。 driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 整个代码可以用6行代码编写,如下所示:

package demo;

import java.util.concurrent.TimeUnit;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class Q44308973_remote_unreachablebrowserexception {

public static void main(String[] args) 
{

System.setProperty("webdriver.gecko.driver", "C:\\your_directory\\geckodriver.exe");
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setCapability("marionette", true);
WebDriver driver =  new FirefoxDriver(dc);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://google.com");
}

}

详细了解 webdriver.firefox.marionette 进化为 webdriver.gecko.driver 你可以看这个地方。

相关问题