Selenium webdriver Webdriver例外情况:";“无法接触到铬”;

Selenium webdriver Webdriver例外情况:";“无法接触到铬”;,selenium-webdriver,docker,webdriver,selenium-chromedriver,chrome-web-driver,Selenium Webdriver,Docker,Webdriver,Selenium Chromedriver,Chrome Web Driver,我在ubuntu服务器上运行selenium测试用例,该服务器基本上在firefox和chrome中运行测试用例。 Firefox启动并成功运行测试用例,但chrome引发异常: *****下面是stacktrace的片段:***** 在端口21549上启动ChromeDriver(v2.8.240825) PAC支持已禁用,因为没有系统实现 测试集成Test.AdminUserelementscheck失败: org.openqa.selenium.WebDriverException:无法访

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

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

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

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

测试集成Test.AdminUserelementscheck失败:

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()

}

});

}
公共类集成测试{
私有静态最终字符串configFile=“test.properties”;
私有最终字符串FIREFOX=“FIREFOX”;
私有最终字符串CHROME=“CHROME”;
私有最终字符串PHANTOMJS=“PHANTOMJS”;
私有最终字符串BROWSERNAME=“browser”;
私有静态属性props=新属性();
公共WebDriver;
专用静态配置附加配置;
@课前
public static void setUp()引发IOException、SQLException{
load(IntegrationTest.class.getResourceAsStream(“/”+configFile));
}
@试验
public void AdminUserelementscheck()引发SQLException,IOException{
String[]browsers=props.getProperty(BROWSERNAME).split(“,”);
System.out.println(“在conf中指定的浏览器数量:“+props.getProperty(BROWSERNAME));
用于(字符串浏览器:浏览器){
System.out.println(“当前正在处理的浏览器:+浏览器”);
if(browser.equalsIgnoreCase(FIREFOX))
webDriver=新的FirefoxDriver();
else if(browser.equalsIgnoreCase(CHROME))
webDriver=新的ChromeDriver();
其他的
webDriver=新的PhantomJSDriver();
正在运行(testServer(3333,fakeApplication()),webDriver,new Callback()){
*********登录和断言语句*******************
browser.quit()
}
});
}

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


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

--特权的

否则,您可以使用Chrome启动

--没有沙箱


还要确保PATH环境变量具有到chromedriver的路径。

我遇到了类似的问题。我正在本地运行Selenium测试,突然出现了“webdriver异常chrome不可访问”错误


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

我尝试了chromedriver的大多数版本,从2.7到2.14。它抛出了sa需要注意的一点是,整个安装程序在docker容器中运行。我将chromedriver可执行文件放在系统环境路径中。它可以选择chromedriver,但不能启动它。在调用脚本之前,您是否配置了XServer显示参数,如Display=:0?非常感谢,它起到了作用。@Conor@Immanuel Fredrick:我把这个命令放在哪里?请以上面的例子帮助理解。好的,我试着把它传递给chrome args,但它说在这种情况下环境不可用。另外,你需要增加dev/shm依赖
--无沙箱
进行自动测试安全吗?下次我会尽量更直接:)它也可以是一个port docker容器和远程设备/主机之间的转发问题。