Webdriver 异常:“无法访问 chrome”

Webdriver exception: "chrome not reachable"

提问人:Immanuel Fredrick 提问时间:2/6/2015 最后编辑:Christian VielmaImmanuel Fredrick 更新时间:11/27/2017 访问量:35140

问:

我在 ubuntu 服务器中运行 selenium 测试用例,该服务器基本上在 firefox 和 chrome 中运行测试用例。 Firefox 启动并成功运行测试用例,但 chrome 抛出异常:

下面是 stacktrace 的代码片段:*****

在端口 21549 上启动 ChromeDriver (v2.8.240825)

PAC 支持已禁用,因为没有系统实现

测试集成Test.AdminUserelements检查失败:

org.openqa.selenium.WebDriverException:无法访问 chrome (驱动程序信息:chromedriver=2.8.240825,platform=Linux 2.6.32-431.el6.x86_64 x86_64)(警告:服务器未提供任何堆栈跟踪信息) [错误]命令持续时间或超时:20.83 秒


嗨,下面是我代码的一小段:

public class IntegrationTest {

private static final String configFile="test.properties";

private final String FIREFOX="firefox";

private final String CHROME="chrome";

private final String PHANTOMJS="phantomjs";

private final String BROWSERNAME="browser";

private static Properties props = new Properties();

public WebDriver webDriver;

private static Configuration additionalConfigurations;


@BeforeClass

public static void setUp() throws IOException, SQLException{

props.load(IntegrationTest.class.getResourceAsStream("/" + configFile));
        }

@test

public void AdminUserelementscheck() throws SQLException, IOException {

String[] browsers = props.getProperty(BROWSERNAME).split(",");

System.out.println("Number of browsers specified in conf:"+props.getProperty(BROWSERNAME));

for(String browser:browsers){

System.out.println("Browser currently processing:"+browser);

if(browser.equalsIgnoreCase(FIREFOX))

webDriver = new FirefoxDriver();

else if(browser.equalsIgnoreCase(CHROME))

webDriver = new ChromeDriver();

else

webDriver = new PhantomJSDriver();

running(testServer(3333,fakeApplication()),webDriver, new Callback<TestBrowser>() {


********* LOGIN AND ASSERTION STATMENTS*******************

browser.quit()

}

});

}
selenium-webdriver docker webdriver selenium-chromedriver chrome-web-driver

评论

0赞 Christian Vielma 4/24/2017
这也可能是 docker 容器与远程设备/主机之间的端口转发问题。

答:

1赞 nilesh 2/7/2015 #1

您的 chrome 驱动程序似乎很旧。尝试从下面下载最新的截至日期,如果遇到任何新错误,请报告。

http://chromedriver.storage.googleapis.com/index.html?path=2.14/

评论

0赞 Immanuel Fredrick 2/7/2015
我尝试了从 2.7 到 2.14 的大多数版本的 chromedriver。它抛出相同的错误
1赞 Immanuel Fredrick 2/11/2015
需要注意的一点是,整个设置在 Docker 容器内运行
22赞 Conor 3/10/2015 #2

这是因为 Chrome 也利用 unix 容器来运行。如果您希望它在 docker 中运行,请传递 docker run 命令

--特权

否则,您可以使用以下命令启动 Chrome

--no-sandbox

评论

3赞 Ronak Agrawal 9/10/2015
@Conor @ Immanuel Fredrick:我把这个命令放在哪里?请以上面为例帮助理解。
0赞 Ronak Agrawal 9/13/2015
好的,我尝试将其传递给 chrome args,但它说在这种情况下环境不可用。
0赞 12/7/2015
--no-sandbox 有效,但我不必在以前的版本中设置它,而且它也不是那么安全
1赞 Vanuan 2/17/2016
此外,您还需要增加 dev/shm github.com/elgalu/docker-selenium/issues/...
2赞 Marco Aurélio Deleu 3/6/2017
依靠自动化测试是否安全?--no-sandbox
0赞 StackOverFlow User 3/10/2015 #3

此外,请确保 PATH 环境变量具有通往 chromedriver 的路径。

评论

0赞 Immanuel Fredrick 3/11/2015
我将 chromedriver 可执行文件放置在系统环境路径中。它能够选择 chromedriver 但不能启动它 .
1赞 StackOverFlow User 3/12/2015
在调用脚本之前,您是否配置了 XServer Display 参数,例如 DISPLAY=:0?
4赞 sKyTzi 7/12/2016 #4

我也遇到过类似的问题。我正在本地运行我的 Selenium 测试,突然出现“webdriver exception chrome not reached”错误。

问题是我的常规 chrome 浏览器中已经有太多的标签。在感到沮丧之后,我关闭了几个选项卡,突然它起作用了。我不确定选项卡是否有一定的限制,但如果有人遇到同样的问题,请尝试一下。

评论

0赞 sKyTzi 7/15/2016
下次我会尽量更直截了当:)