Webdriver异常:"chrome未连接"

8
我在Ubuntu服务器上运行Selenium测试用例,主要在Firefox和Chrome中运行测试用例。Firefox可以成功启动并运行测试用例,但是Chrome会抛出异常:
*****以下是堆栈跟踪的代码片段*****
Starting ChromeDriver (v2.8.240825) on port 21549
由于没有系统实现,PAC支持被禁用
IntegrationTest.AdminUserelementscheck测试失败:
org.openqa.selenium.WebDriverException: chrome不可达 (Driver info: 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()

}

});

}

这也可能是您的Docker容器和远程设备/主机之间的端口转发问题。 - Christian Vielma
4个回答

22

这是因为Chrome也使用了Unix容器来运行。如果想在Docker内运行它,请传递docker run命令

--privileged

否则,您可以使用以下参数启动Chrome

--no-sandbox


1
非常感谢,它起作用了。 - Immanuel Fredrick
3
@Conor @Immanuel Fredrick:我应该把这个命令放在哪里?请用上面的示例帮助我理解。 - Ronak Agrawal
好的,我尝试将它传递给Chrome参数,但它说在那种情况下环境不可用。 - Ronak Agrawal
--no-sandbox 可以工作,但在之前的版本中我不需要设置它,而且它也不太安全。 - user494599
1
此外,您需要增加dev/shm。 - Vanuan
2
自动化测试中依赖于 --no-sandbox 安全吗? - Marco Aurélio Deleu

4
我遇到了类似的问题。我在本地运行我的Selenium测试时突然出现了“webdriver exception chrome not reachable”错误。
问题是我在常规的Chrome浏览器中已经打开了太多的标签页。在感到沮丧之后,我关闭了一些标签页,突然它就可以正常工作了。我不确定是否有特定的标签页限制,但如果有人遇到同样的问题,请尝试一下。

下次我会尽量更加直接明了 :) - sKyTzi

1

我尝试了从2.7到2.14的大多数版本的chromedriver。 它抛出相同的错误。 - Immanuel Fredrick
1
需要注意的是,整个设置都在 Docker 容器内运行。 - Immanuel Fredrick

0
请确保 PATH 环境变量中包含 chromedriver 的路径。

我已经将chromedriver可执行文件放置在系统环境路径中。它能够找到chromedriver,但无法启动它。 - Immanuel Fredrick
1
在调用脚本之前,您是否配置了XServer显示参数,例如DISPLAY=:0? - StackOverFlow User

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接