关于Selenium和WebDrivers的困惑

时间:2017-08-02 11:15:06

标签: java selenium jenkins junit headless-browser

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

常规测试工作正常,但WebGUI测试失败,我应该让它们工作。然而,我对Jenkins的插件“Selenium Grid”(甚至是必要的)的角色感到非常困惑,JUnit在项目内部使用selenium libary进行测试,并且需要设置无头浏览器。

Jenkins插件“Selenium Grid”的角色究竟是什么?Selenium图书馆如何与无头浏览器(WebDrivers的角色?)进行通信? 我已经知道Selenium中心和节点,但不知道如何处理它。

我希望有人能帮助我清理我的困惑......

2 个答案:

答案 0 :(得分:2)

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

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

然后应该启动所需数量的 Selenium Nodes ,并引用Hub的Url。节点将自己注册到集线器。

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

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

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

Jenkins Selenium Plugin指定您应使用以下内容创建WebDriver的网址:

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

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

答案 1 :(得分:1)

取自以下网站。 https://wiki.jenkins.io/display/JENKINS/Selenium+Plugin

此插件以下列方式设置Selenium Grid

  • 在master上,Selenium Grid Hub在端口4444上启动,除非在Jenkins全局配置中另行配置。这是您的所有测试应该连接的地方。
  • 对于每个从站,都会复制必要的二进制文件并启动Selenium RC。
  • RC和Selenium Grid Hub自动连接在一起。

现在问题是你需要这个吗?

这符合项目的要求。你只需要问自己这个问题

  • 您是否需要并行运行测试(缩短时间或进行浏览器兼容性测试),无论是现在还是将来。