无法在Jenkins中正确运行硒测试

时间:2019-07-30 22:10:40

标签: selenium google-chrome jenkins selenium-webdriver selenium-chromedriver

我创建了一些硒测试。没有问题可以在本地运行。我想配置一个Jenkins作业来运行测试。出现以下错误

Starting ChromeDriver 2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926) on port 6720
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1564522396.317][SEVERE]: bind() failed: Cannot assign requested address (99)
PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: OSS

所有测试都无法找到网络元素。

docker映像中的chrome版本是73。我提供的chrome驱动程序是2.46(也可以在73.0.3683.68中尝试过)selenium-java 3.5.0

我尝试了很多建议,例如 添加chmod +x src/test/resources/localWebDriver/chromedriver

ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--headless");
        chromeOptions.addArguments("--no-sandbox");
        chromeOptions.addArguments("--whitelisted-ips");
        chromeOptions.addArguments("--disable-extensions");

但是仍然无法正确运行这些测试。有人遇到过这个问题吗?请帮助我,我花了几个小时来调查问题。

其他信息:

Build info: version: '3.5.3', revision: 'a88d25fe6b', time: '2017-08-29T12:42:44.417Z'
      System info: host: '9ecf345f97e8', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.121-85.96.amzn1.x86_64', java.version: '1.8.0_51'
      Driver info: org.openqa.selenium.chrome.ChromeDriver
      Capabilities [{mobileEmulationEnabled=false, timeouts={implicit=0, pageLoad=300000, script=30000}, hasTouchScreen=false, platform=LINUX, acceptSslCerts=false, goog:chromeOptions={debuggerAddress=localhost:35983}, acceptInsecureCerts=false, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, platformName=LINUX, setWindowRect=true, unexpectedAlertBehaviour=ignore, applicationCacheEnabled=false, rotatable=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.46.628388 (4a34a70827ac54148e092aafb70504c4ea7ae926), userDataDir=/tmp/.org.chromium.Chromium.79YB7v}, takesHeapSnapshot=true, unhandledPromptBehavior=ignore, pageLoadStrategy=normal, strictFileInteractability=false, databaseEnabled=false, handlesAlerts=true, version=73.0.3683.103, browserConnectionEnabled=false, proxy=Proxy(), nativeEvents=true, locationContextEnabled=true, cssSelectorsEnabled=true}]

1 个答案:

答案 0 :(得分:1)

此错误消息...

Build info: version: '3.5.3', revision: 'a88d25fe6b', time: '2017-08-29T12:42:44.417Z'
      System info: host: '9ecf345f97e8', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.121-85.96.amzn1.x86_64', java.version: '1.8.0_51'
      Driver info: org.openqa.selenium.chrome.ChromeDriver

...表示 ChromeDriver 无法启动/产生新的 WebBrowser ,即 Chrome浏览器会话。

您的主要问题是所使用的二进制版本之间的不兼容性

  • 您正在使用 chromedriver = 2.46
  • chromedriver=2.46的发行说明中明确提到以下内容:
  

支持 Chrome v71-73

  • 您正在使用 chrome = 73.0
  • 您的 Selenium Client 版本是 2017-08-29T12:42:44.417Z 3.5.3 ,几乎是 2 岁。
  • 您的 JDK版本 1.8.0_51 ,这很古老。

因此 JDK v8u51 Selenium Client v3.5.3 ChromeDriver v2.46 之间存在明显的不匹配Chrome浏览器v73.0


解决方案

  • JDK 升级到当前级别JDK 8u212
  • 升级到当前级别Version 3.141.59
  • ChromeDriver 升级到当前的ChromeDriver v76.0级别。
  • Chrome 更新到当前的 Chrome版本76.0 级别。 (根据ChromeDriver v76.0 release notes
  • 通过您的 IDE
  • 清理您的项目工作区重建您的项目,并且仅具有必需的依赖项。
  • 如果您的基本 Web客户端版本太旧,则将其卸载并安装最新版本的 Web客户端 GA。
  • 非root用户用户的身份执行@Test
相关问题