2

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

我遇到的问题是,尽管在arquillian.xml文件中设置了 Selenium 集线器服务器的主机/端口详细信息,但 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>
4

1 回答 1

3

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

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

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

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

于 2015-07-06T21:39:41.260 回答