2

統合テストに Selenium-serenity を使用しています。デフォルトでは、セレンは WebDriver 用に FirefoxDriver を統合しますが、今私がやろうとしているのは PhantomJS を使用することです。初期化後にドライバを適切に設定する方法が今のところ見つかりませんでした。

これまでのところ、pageObject の getDriver() メソッドをオーバーライドして、phantomJs webDriver を返しました。

private static WebDriver webDriver;

@Override
public WebDriver getDriver() {
    if (webDriver == null) {
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setJavascriptEnabled(true);
        caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY, "/Users/pabloperezgarcia/Downloads/phantomjs");
        webDriver = new PhantomJSDriver(caps);
        setDriver(webDriver);
    }
    return webDriver;
}

しかし、問題は、WebDriver に対するすべてのアクションが他のページに反映されないことです。これは、もちろん、単一の webDriver のみを返し、super.getDriver() を返していないためです。

私の質問は、新しいインスタンスである複数のページオブジェクト間で状態を共有するように、セレニティの webdriver を適切に設定するにはどうすればよいかということです。

Firefox では完璧に動作するようです。

4

1 に答える 1

3

webdriver.driverプロパティをphantomjsに設定する必要があります。Serenity を使用すると、これをコマンド ライン経由で渡すか、プロパティ ファイルで定義するか、コードで注釈を付けることができます。システム プロパティを使用して、phantomjs ドライバーの場所を指定する必要がある場合もあります-Dphantomjs.binary.path=path/to/driver

注釈を使用していると言いましたが、試しました@Managed(driver="phantomjs")か?

コマンドライン経由で渡すこともできます(IDEでは実行構成になります)-Dwebdriver.driver=phantomjs

テストをリモートで実行している場合は、実行するphantomjs.webdriverポートにプロパティを設定する必要がある場合もあります。

Maven を介してプロパティを設定することもできます。

<properties>
    <webdriver.driver>phantomjs</webdriver.driver>
</properties>

次に、フェイルセーフプラグインでシステムプロパティを定義します

<plugin>
    <artifactId>maven-failsafe-plugin</artifactId>                  
    <version>2.18</version>
    <configuration>
        <systemProperties>
            <webdriver.driver>${webdriver.driver}</webdriver.driver> 
        </systemProperties>
    </configuration>
</plugin>

カスタム ドライバー プロバイダーを定義する場合は、DriverSource次のプロパティを実装して定義するwebdriver.driver必要 があります。webdriver.provided.typewebdriver.provided.mydriverthucydides.driver.capabilities

セレニティのドキュメント: http://thucydides.info/docs/serenity-staging/

于 2015-11-17T20:24:16.543 に答える