java - 关于 Selenium 和 WebDrivers 的困惑

标签 java selenium jenkins junit headless-browser

我进入了一个需要测试 WebGUI 的项目。为此,Selenium 与 Jenkins 结合使用来安排任务和运行测试。所有这些都由一台服务器 (Linux) 处理。

常规测试工作正常,但 WebGUI 测试失败,我应该让它们工作。但是,我对 Jenkins 的插件“Selenium Grid”(它是否必要)的作用感到非常困惑,项目内部的 JUnit 测试使用了 selenium 库,并且需要设置 headless 浏览器。

Jenkins 插件“Selenium Grid”的确切作用是什么?Selenium 库如何与 headless 浏览器通信(WebDrivers 的作用?)? 我已经了解 Selenium 中心和节点,但不知道如何处理。

我希望有人能帮我解决我的困惑......

最佳答案

Selenium Grid 可用于设置可扩展的自动化浏览器环境。它通常用于自动化 GUI 测试。它由一个 Hub 和一个或多个 Node 组成。

应启动 Selenium Hub 并存储生成的 URL。

然后需要数量的 Selenium 节点 应该以对 Hub 的 Url 的引用来启动。节点将自己注册到 Hub。

然后你可以使用Selenium Java创建一个 RemoteWebDriver实例,可选择指定 Selenium Hub 的 url。此 webdriver 只是一个 Java API,实际工作将在 Selenium Node 环境中完成。

您可以使用 Java API 在 WebDriver 实例上实现所需的操作。运行时,代码会将所有调用委托(delegate)给正在运行的 Selenium 环境。

有多种方法可以实际启动集线器和节点。 Jenkins 插件可以做到,你可以使用 Docker ,本地进程,或更多。我建议不要将你的设置直接绑定(bind)到 Jenkins,除非你确定你永远不会切换。

Jenkins Selenium Plugin指定您应该创建 WebDriver 的 URL:

new RemoteWebDriver(new URL("http://jenkins.mydomain:4444/wd/hub"), capability);

jenkins.mydomain 可能是您的 Linux 服务器的 IP。在它的正上方有一行表示它“也”接受外部节点。我对这个插件不熟悉,所以我不知道这是否意味着它默认设置了一个或多个节点。

关于java - 关于 Selenium 和 WebDrivers 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45459317/

相关文章:

java - 如何将单词归类到相应的类别?

java - docx4j 将 docx 转换为错误的 html 格式

java - 如何让 Selenium WebDriver 等待 HTML5 视频(jwplayer)完成?

git - Jenkins Git 插件 : Failed to connect to repository, 返回状态码 128

java - 如何在h2数据库中设置用户定义变量?

selenium - 如何测试模糊 - Firefox Selenium 驱动程序?

google-chrome - 在 selenium chromedriver 上运行的远程调试 Internjs

.net - 如何在 Jenkins 构建中从 SVN 监控中排除文件\文件夹

java - Jenkins 注入(inject)环境变量

java - 错误 : 'cannot find symbol class GetTokenResult' after adding latest firebase-messaging dependency