将 Arquillian Drone 与 Selenium Grid 结合使用

Using Arquillian Drone with Selenium Grid

我已经使用 Arquillian Done 为我的基于 Web 的应用程序创建了一套功能性 UI 测试,我想 运行 在 Selenium 网格上而不是 运行 测试它们本地。

我遇到的问题是,尽管在 arquillian.xml 文件中设置了 Selenium 集线器服务器的 host/port 详细信息,但 UI 测试是在本地执行的,而不是在其中一个上执行的Selenium 节点。我什至尝试输入不存在的主机的详细信息,但测试仍在本地 运行,并且没有生成任何错误消息。似乎 Drone 忽略了 arquillian.xml 文件中的配置。

是我在arquillian.xml文件中的配置有问题,还是我做错了什么?不幸的是,关于将 Arquillian Drone 与 Selenium Grid 结合使用的文档似乎很少。

arquillian.xml文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<arquillian xmlns="http://jboss.org/schema/arquillian"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

  <extension qualifier="webdriver">
    <property name="browser">${arquillian.browser}</property>
    <property name="remoteAddress">http://selenium-hub:4444</property>
  </extension>

   <extension qualifier="selenium-server">
     <property name="host">selenium-hub</property>
     <property name="port">4444</property>
     <property name="skip">true</property>
   </extension>

  <container qualifier="arquillian-glassfish-remote">
    <configuration>
      ...
    </configuration>
  </container>

</arquillian>

我的 Maven pom.xml 文件包含以下依赖项和依赖项管理部分:

<dependencies>
  <!-- Various Java EE and Internal Dependencies -->

  <!-- Test Dependencies -->
  <dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.jboss.arquillian.junit</groupId>
    <artifactId>arquillian-junit-container</artifactId>
    <scope>test</scope>
  </dependency>
  <dependency>
    <groupId>org.jboss.arquillian.graphene</groupId>
    <artifactId>graphene-webdriver</artifactId>
    <version>2.0.3.Final</version>
    <type>pom</type>
    <scope>test</scope>
  </dependency>
</dependencies>

<dependencyManagement>
  <dependencies>
    <dependency>
        <groupId>org.jboss.arquillian</groupId>
        <artifactId>arquillian-bom</artifactId>
        <version>1.1.8.Final</version>
        <scope>import</scope>
        <type>pom</type>
    </dependency>
    <dependency>
      <groupId>org.jboss.arquillian.selenium</groupId>
      <artifactId>selenium-bom</artifactId>
      <version>2.46.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
    <dependency>
      <groupId>org.jboss.arquillian.extension</groupId>
      <artifactId>arquillian-drone-bom</artifactId>
      <version>1.3.1.Final</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

似乎有两个问题阻止了针对 Selenium Grid 执行 Arquillian Drone 测试。

第一个问题是 arquillian.xml 文件的 webdriver 部分需要包括 <property name="remote">true</property><property name="remoteReusable">true</property> 除了 remoteAddress 属性。如果没有 remoteremoteReusable,则测试将在本地 运行。

第二个问题是 remoteAddress 没有包含 Selenium Grid 中心服务器的完整 URL。 属性 应设置为 <property name="remoteAddress">http://selenium-hub:4444/wd/hub</property>。显然 selenium-hub 需要设置为您的 Selenium 中心服务器的主机名。我通过浏览器访问此 URL 时返回了 NullPointerException 但这似乎是正常行为,因为在正确访问 URL 时还设置了其他参数。

此外,arquillian.xml 文件的 selenium-server 部分似乎是不必要的。