无法在詹金斯(Jenkins)正确运行硒测试



我创建了一些硒测试。没有问题可以在本地运行。我想配置詹金斯作业以运行测试。got以下错误

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}]

此错误消息...

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

您的主要问题是不兼容在您使用的二进制文件之间,如下所示:

  • 您正在使用 chromedriver = 2.46
  • chromedriver = 2.46 的发行说明清楚地提到了以下内容:

支持 Chrome V71-73

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

因此, jdk v8u51 selenium client v3.5.3 chromedriver v2.46 之间存在明显的不匹配Chrome浏览器v73.0


解决方案

  • 升级 jdk 到当前级别JDK 8U212。
  • 升级到当前级别版本3.141.59。
  • 升级 chromedriver 到当前Chromedriver v76.0级别。
  • 更新 chrome 到当前 Chrome版本76.0 级别。(根据Chromedriver v76.0发行说明(
  • 清洁您的项目工作区通过您的 IDE 重建项目仅具有所需依赖性。
  • 如果您的base Web客户端版本太旧了,请卸载它并安装最新的GA并发布版本的版本 Web Client
  • 将您的@Test执行为 non root 用户。

最新更新