gpt4 book ai didi

java - 在 Jenkins 上运行 Selenium 测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:30 27 4
gpt4 key购买 nike

我正在尝试通过在 Red-Hat Linux 服务器上设置的 Jenkins Jobs 运行 Selenium (FluentLenium) 测试。它在项目目录中运行一个简单的 JUnit/WebDriver 测试和一个带有“mvn test”命令的 Maven 构建。我面临的问题是找到一个驱动程序来运行它。这里的Jenkins工程师在我指定的路径下给我放了一个geckodriver.exe。尽管它似乎并没有多大帮助。

我的代码失败的地方:

 @Override
public WebDriver newWebDriver(){
System.setProperty("webdriver.gecko.driver", "/var/lib/jenkins/tools/gecko/geckodriver.exe");

return new FirefoxDriver();
}


org.openqa.selenium.WebDriverException: 
Browser failed to start, test [ searchForGod(ok.TGoogle) ] execution interrupted.
Caused by: [ java.lang.IllegalStateException: The driver executable does not exist: /var/lib/jenkins/tools/gecko/geckodriver.exe]


+ ls /var/lib/jenkins/tools/gecko/
geckodriver
geckodriver-v0.16.1-linux64.tar.gz

我知道 geckodriver 需要 Firefox 应用程序才能运行。有人告诉我,因为 linux 服务器是非 GUI,a display port is setup to run Firefox .此显示端口在 Linux 服务器上的环境变量上设置为 DISPLAY = 99. 同样,虽然我不知道如何让我的 pom.xml 或我的 java 代码指向它。目前我正在尝试:

<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<includes>
<include>PASS.class</include>
<include>TGoogle.class</include>
</includes>
<environmentVariables>
<DISPLAY>99</DISPLAY>
</environmentVariables>
</configuration>
</plugin>
</plugins>

这些都不起作用,我也没有取得任何进展。我现在唯一的选择是在 linux 启动时设置我自己的 Jenkins 服务器并尝试让它在本地工作,然后让我们的 Jenkins 工程师使用我的设置。尽管他声称我应该能够运行它,因为其他人已经能够通过 Selenium 插件提交 .html 文件。虽然,我运气不好,已经用尽了我所有的选择。

版本:
本地 Selenium WebDriver 3.5.3、Junit 4.9、Fluentlenium 3.4、Maven
Linux 服务器: 他说他使用的是 selenium-standalone-server.jar 2.44(我知道这肯定会与我的 FluentLenium 版本冲突,但没有它我会得到同样的异常所以...... ), Red Hat Enterprise Linux Server release 7.2, geckodriver 0.19.1

更新:
以下代码用于创建与服务器的连接。 Firefox 版本现在是 52.4,geckodriver 0.16.1,Selenium 3.7.0,FluentLenium 3.4。此版本配置在本地有效。是的,geckodriver 不是 .exe。它只是没有文件扩展名的 geckodriver。

  @Override
public WebDriver newWebDriver(){
GeckoDriverService ds = new GeckoDriverService.Builder()
.usingDriverExecutable(new File("/var/lib/jenkins/tools/gecko/0.16.1/geckodriver"))
.usingFirefoxBinary(new FirefoxBinary(new File("/usr/bin/firefox")))
.withEnvironment(ImmutableMap.of("DISPLAY",":99")).build();
return new FirefoxDriver(ds);
}

不幸的是, Jenkins 现在正在抛出:

[INFO] Running TGoogle

Nov 03, 2017 3:46:48 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C

[ERROR] Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 4.703 s <<< FAILURE! - in TGoogle
[ERROR] searchForGod(TGoogle) Time elapsed: 4.636 s <<< FAILURE!
java.lang.AssertionError
at TGoogle.searchForGod(TGoogle.java:29)

至少它现在正在“连接”。尽管它在本地运行良好。

更新 2:现在终于可以工作了。 newWebDriver() 方法代码中显示的配置是正确的。我有一个包装在页面对象中的断言,而不是直接在 JUnit @Test 中。不知道为什么这会产生影响(因为它不在本地的 IntelliJ 中)。一旦我移动断言它就起作用了!!万岁,希望这对某人有帮助。

最佳答案

解压 geckodriver tarball 并指定解压缩的 geckodriver 文件的路径。使用您在 pom.xml 中提到的相同版本的 selenium 服务器。 在主机 linux 机器上安装 XVFB

Double check that the geckodriver executable version is compatible with Firefox browser version on host machine.

关于java - 在 Jenkins 上运行 Selenium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47085248/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com