selenium 3.12 和 geckodrvier 0.21.0 是不是兼容且稳定,Linux 机器上的所有测试都被跳过

Posted

技术标签:

【中文标题】selenium 3.12 和 geckodrvier 0.21.0 是不是兼容且稳定,Linux 机器上的所有测试都被跳过【英文标题】:Is selenium 3.12 and geckodrvier 0.21.0 are compatible and stable, all tests gets skipped on linux machineselenium 3.12 和 geckodrvier 0.21.0 是否兼容且稳定,Linux 机器上的所有测试都被跳过 【发布时间】:2019-02-24 15:13:23 【问题描述】:

平台详情:

geckodriver 0.21.0,Firefox:60,Selenium:3.12,cent Os 7

当我使用 mvn 运行它时,它成功启动:

geckodriver INFO 监听 127.0.0.1:14185

Marionette INFO 监听端口 284135

测试在 Windows 机器上成功运行,但是在 CentOs 7 上运行时,测试被跳过。

我观察到所有测试都被跳过,因为 Firefox 的 GUI 在一段时间后关闭,并在 cmd 控制台上显示以下信息和错误:

信息:org.openqa.selenium.WebDriverException:java.io.IOException: Connectionlocalhost:33365, proxy=DIRECT 上的流意外结束 hostAddress=localhost/12 6.10.0.1:258107

[错误] java.net.ConnectException: 连接失败 本地主机/127.0.0.1:2285

/bin/sh: 第 1 行:8780 被杀死 /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.161-2.b14.el7.x86_64/jre/bin/java

if(platform.equalsIgnoreCase("linux")) 
FirefoxOptions options = new FirefoxOptions();
DesiredCapabilities desiredCap = DesiredCapabilities.firefox();
profile.setPreference("browser.download.dir",System.getProperty("user.dir")+ File.separator + "target");
System.setProperty("webdriver.gecko.driver", "/path/geckodriver/geckodriver");
System.setProperty("webdriver.firefox.bin","/usr/bin/firefox/firefox");
desiredCap.setCapability(CapabilityType.PLATFORM_NAME,Platform.LINUX);
desiredCap.setCapability("webdriver.firefox.profile",DesiredCapabilities.firefox());
driver = new FirefoxDriver();

我在这方面花了很多时间,但无法找到根本原因。 使用 maven surefire 插件 2.19.1.

请帮帮我,我真的被困在这里了。

【问题讨论】:

【参考方案1】:

根据下面的文档,您在问题中提到的二进制文件组合(Selenium v​​3.12 / GeckoDriver v0.21.0 / Firefox v60 ) 的兼容性和稳定性如下:

此错误消息...

INFO: org.openqa.selenium.WebDriverException: java.io.IOException: unexpected end of stream on Connectionlocalhost:33365, proxy=DIRECT hostAddress=localhost/12 6.10.0.1:258107
[ERROR] java.net.ConnectException: Failed to connect to localhost/127.0.0.1:2285

...暗示 GeckoDriver 无法启动/生成新的 WebBrowserFirefox Browser 会话。

正如您提到的使用 GeckoDriver v0.21.0,没有必要在 webdriver.firefox.bin 中提及setProperty。您需要确保 Mozilla Firefox 安装在每个系统的默认位置。

解决方案

根据您的代码试验,尽管您已经创建并配置了FirefoxOptions Class 和DesiredCapabilities Class 对象,但在初始化WebDriver 期间您没有传递它们. 如果您的 用例 需要 FirefoxOptions 类和 DesiredCapabilities 类对象,您需要在初始化 WebDriverWeb 浏览器 期间传递它们>. 如果您的用例 不需要需要FirefoxOptions Class 和DesiredCapabilities Class 对象,您需要删除它们。

【讨论】:

同样的问题又开始出现了。不知道怎么回事:(【参考方案2】:

你的代码在我看来不错。

检查自动化中使用的所有进程,确保多个进程未在运行。最重要的是关注:

ps -ef|grep firefox

ps -ef|grep geckodriver

ps -ef|grep java 

如果有多个进程正在运行则关闭

检查任何错误日志:

sudo vi /var/log/messages

查找 Kill 或 ERROR。这应该有助于解决问题。

【讨论】:

谢谢@vish,是的,它显示了多个进程正在运行。我杀死了所有进程,当再次运行它时,它已经永久解决了这个问题。 :)

以上是关于selenium 3.12 和 geckodrvier 0.21.0 是不是兼容且稳定,Linux 机器上的所有测试都被跳过的主要内容,如果未能解决你的问题,请参考以下文章

第二周 3.6-3.12

3.12 在运算和比较时使用null值

Debian下Hadoop 3.12 集群搭建

3.12考试小记

3.12----对potplayer的使用评价

VMWare中CentOS6.8的Greenplum4.3.12安装