Как настроить WebDriver с Arquillian с помощью интерфейса Capabilities

Я хочу использовать расширение Arquillian Drone для настройки WebDriver для некоторых функциональных тестов, используя интерфейс Capabilities, как описано здесь. Я добавил артефакты arquillian-bom (версия 1.0.2.Final), arquillian-drone-bom (версия 1.1.0.CR2), arquillian-drone-webdriver-depchain и arquillian-drone-webdriver в качестве зависимостей в моем pom. xml, как показано ниже, и объявил возможности, как показано, но когда я запускаю свои тесты, возникает следующее исключение:

java.lang.NullPointerException
at org.openqa.selenium.remote.DesiredCapabilities.<init>(DesiredCapabilities.java:51)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration$5.invoke(TypedWebDriverConfiguration.java:268)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration$5.invoke(TypedWebDriverConfiguration.java:259)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration$CallInterceptor.intercept(TypedWebDriverConfiguration.java:65)
at org.jboss.arquillian.drone.webdriver.configuration.TypedWebDriverConfiguration.getCapabilities(TypedWebDriverConfiguration.java:274)
at org.jboss.arquillian.drone.webdriver.factory.FirefoxDriverFactory.createInstance(FirefoxDriverFactory.java:79)
at org.jboss.arquillian.drone.webdriver.factory.FirefoxDriverFactory.createInstance(FirefoxDriverFactory.java:42)
at org.jboss.arquillian.drone.webdriver.factory.WebDriverFactory.createInstance(WebDriverFactory.java:129)
at org.jboss.arquillian.drone.webdriver.factory.WebDriverFactory.createInstance(WebDriverFactory.java:43)
at org.jboss.arquillian.drone.impl.DroneCreator.createWebTestBrowser(DroneCreator.java:71)
etc.

Глядя на код, я вижу, что этот NPE вызван переменной класса, capacityMap, в TypedWebDriverConfiguration, которая не инициализируется.

Что мне нужно исправить в конфигурации, чтобы это заработало?

выдержка pom.xml:

<project>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>${arquillian.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-bom</artifactId>
            <version>${drone.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-webdriver</artifactId>
            <version>${drone.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-webdriver-depchain</artifactId>
            <version>${drone.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

arquillian.xml:

<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="browserCapabilities">firefox</property>
        <property name="capabilityWebdriverFirefoxBin">/usr/bin/firefox</property>
    </extension>
</arquillian>

Объявление WebDriver в коде:

@RunWith(Arquillian.class)
public class WebDriverTest {

    @Deployment
    public static WebArchive createDeployment() {
        ...
    }

    @Drone
    WebDriver driver;   

} 

person Katie J. Ots    schedule 20.08.2012    source источник


Ответы (1)


Это проблема управления версиями, вызванная объявлениями зависимостей в Maven pom.xml. Артефакты Arquillian BOM должны быть объявлены в разделе dependencyManagement с областью импорта. Объявления зависимостей pom.xml должны выглядеть следующим образом:

<project>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-webdriver-depchain</artifactId>
            <version>${drone.version}</version>
            <type>pom</type>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>${arquillian.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.jboss.arquillian.extension</groupId>
                <artifactId>arquillian-drone-bom</artifactId>
                <version>${drone.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>    
        </dependencies>
    </dependencyManagement>
</project>

Обратите внимание, что зависимость arquillian-drone-webdriver больше не нужна.

person Katie J. Ots    schedule 20.08.2012