将 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
属性。如果没有 remote
或 remoteReusable
,则测试将在本地 运行。
第二个问题是 remoteAddress
没有包含 Selenium Grid 中心服务器的完整 URL。 属性 应设置为 <property name="remoteAddress">http://selenium-hub:4444/wd/hub</property>
。显然 selenium-hub
需要设置为您的 Selenium 中心服务器的主机名。我通过浏览器访问此 URL 时返回了 NullPointerException
但这似乎是正常行为,因为在正确访问 URL 时还设置了其他参数。
此外,arquillian.xml
文件的 selenium-server
部分似乎是不必要的。
我已经使用 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
属性。如果没有 remote
或 remoteReusable
,则测试将在本地 运行。
第二个问题是 remoteAddress
没有包含 Selenium Grid 中心服务器的完整 URL。 属性 应设置为 <property name="remoteAddress">http://selenium-hub:4444/wd/hub</property>
。显然 selenium-hub
需要设置为您的 Selenium 中心服务器的主机名。我通过浏览器访问此 URL 时返回了 NullPointerException
但这似乎是正常行为,因为在正确访问 URL 时还设置了其他参数。
此外,arquillian.xml
文件的 selenium-server
部分似乎是不必要的。