我使用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>
My Maven pom.xml文件包含以下依赖项和dependencyManagement部分:
<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>
答案 0 :(得分:3)
似乎有两个问题阻止Arquillian Drone测试针对Selenium Grid执行。
第一个问题是webdriver
文件的arquillian.xml
部分除<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时设置了其他参数。
此外,selenium-server
文件的arquillian.xml
部分似乎是不必要的。