org.openqa.selenium.remote.UnreachableBrowserException: 无法开始新会话。可能的原因是远程服务器地址无效
org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server
我的 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 位)
硒版本:硒-java-3.4.0
我正在使用 Eclipse Luna,我的机器是 Windows 7(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);
}
}
您必须在代码中考虑以下几个因素:
- 您通过
PractiseSession1 ade= new PractiseSession1();
创建了一个相同 class 的对象,并使用对象 ade
调用不同的方法 OpenBrowser()
、GetPage()
和quitbrowser()
。这些方法执行的功能可以通过 main()
中的一行代码来实现,而且无需创建任何对象。
- 在使用遵循 W3C 标准 的 Selenium 3.x 时,要使用 geckodriver.exe,我们需要使用
webdriver.gecko.driver
而不是 System.setProperty
行中的 webdriver.firefox.marionette
。
虽然你提到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
的,您可以观看 。
你应该更换
driver = new FirefoxDriver();
和
driver = new FirefoxDriver(capabilities);
以便您 运行 具有所需功能的测试。
唯一的问题是它可能无法与 3.4.0 一起使用,因为默认超时值已减少并且现在可能太短了。
我的 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 位) 硒版本:硒-java-3.4.0 我正在使用 Eclipse Luna,我的机器是 Windows 7(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);
}
}
您必须在代码中考虑以下几个因素:
- 您通过
PractiseSession1 ade= new PractiseSession1();
创建了一个相同 class 的对象,并使用对象ade
调用不同的方法OpenBrowser()
、GetPage()
和quitbrowser()
。这些方法执行的功能可以通过main()
中的一行代码来实现,而且无需创建任何对象。 - 在使用遵循 W3C 标准 的 Selenium 3.x 时,要使用 geckodriver.exe,我们需要使用
webdriver.gecko.driver
而不是System.setProperty
行中的webdriver.firefox.marionette
。 虽然你提到
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
的,您可以观看
你应该更换
driver = new FirefoxDriver();
和
driver = new FirefoxDriver(capabilities);
以便您 运行 具有所需功能的测试。
唯一的问题是它可能无法与 3.4.0 一起使用,因为默认超时值已减少并且现在可能太短了。