- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试通过在 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/
Selenium IDE、Selenium RC 和 Selenium WebDriver 有什么区别;我们可以在什么样的项目中使用它们?任何建议将不胜感激。 最佳答案 Selenium IDE 是一
我的 Selenium 服务器在远程服务器上运行。我从我的本地 PC 启动我的 Selenium 脚本,它从网站获取数据。 例如,我的 Selenium 脚本执行这段 JS 代码: JSON.stri
Selenium 中“//div[.//a[text()='SELENIUM']]”和“//div[//a[text()='SELENIUM']]”有什么区别xpath。 有人可以澄清我在 xpath
我正在创建自动冒烟测试。我读到在单元测试中使用多个断言不是一个好的做法,这条规则是否也适用于使用 selenium 的 webdriver 测试? 在我的冒烟测试中,有时我会使用 20 多个断言来验证
我在一个变量中存储了一个值,在另一个变量中存储了第二个值,现在我想将这两个数字相加。我无法做到这一点,我尝试过下面的代码,但它不起作用 store 6 w sto
Selenium 中的回车键和回车键有什么区别? This related SO answer并且提供的链接说明它们是不同的。我还注意到,在使用 Firefox 24.2 时,回车键将发送一个 HTM
以下是我遇到异常的详细信息: 当我使用以下命令启动节点时,出现如下错误: F:\SeleniumGrid\Jars>java -jar selenium-server-standalone-3.0.0
我是 的新手 Selenium 我对版本号有点困惑。 Selenium 2.0 2011年发布。我刚刚下载了 Selenium IDE Firefox 扩展,版本为 1.7.2 .是否还有 IDE 的
我正在使用 Selenium 运行Codeception 2。我可以看到 Selenium 打开了浏览器并运行了测试。然后,我从代码接收中得到一个错误,即存在失败的断言。 我知道有一个HTML文件可以
Closed. This question needs to be more focused。它当前不接受答案。 想要改善这个问题吗?更新问题,使它仅关注editing this post的一个问题。
我想关闭弹出窗口(已知的窗口名称),然后返回到原始窗口。 我该怎么办? 如果我无法获得窗口中关闭按钮的常量。那么有没有达到目标的一般行为? 最佳答案 你有没有尝试过: selenium.Close()
我正在用webdriver做一个测试机器人。我有一个场景,它单击一个按钮,打开一个新窗口,并且它通过特定的xpath搜索元素,但是有时没有这样的元素,因为可以将其禁用,并且出现此错误:org.open
我是第一次使用Selenium,对这些选项不知所措。我在Firefox中使用IDE。 当我的页面加载时,它随后通过JSONP请求获取值,并在其中填充选择中的选项。 我如何让Selenium等待选择中的
我开始使用nightwatch.js编写e2e测试,我注意到我想在目标浏览器的控制台(开发人员工具)中手动检查一些错误。但总是在我打开开发者控制台时,浏览器会自动关闭它。这是selenium还是nig
我正在尝试使用以下方式刮除Glassdoor的评论: https://github.com/MatthewChatham/glassdoor-review-scraper 但是我得到了错误并且不知道如
背景 我设置了一个Selenium Grid项目,以在两种不同的浏览器Chrome和Firefox中执行测试。我正在使用Gradle执行测试。该测试将成功执行两次,一次按预期在Chrome中执行,一次
当测试失败时,运行 selenium 测试的浏览器将关闭。这在尝试调试时没有帮助。我知道我可以在失败时选择屏幕截图,但如果没有整个上下文,这并没有帮助。在浏览器仍然可用的情况下,我可以回击并检查发生了
使用 Selenium Web 驱动程序而不是 Selenium RC 启动新的测试框架是个好主意吗?对于 Selenium Web 驱动程序,并非所有 Selenium 方法都已实现。那么使用 Se
我使用 selenium 页面对象模型来定义所有页面元素。我对元素命名所遵循的命名约定不太相信,并且感觉太长了。请对此提出建议。 @FindBy(xpath = "//tbody[@id='tabvi
有一个带有按钮的 html 页面,我的 Selenium 测试正在测试,当单击按钮时,会执行一个操作。 问题是,看起来点击发生在 javascript 执行之前 - 在处理程序绑定(bind)到页面之
我是一名优秀的程序员,十分优秀!