2017-08-04 2 views
0

私はGraphene Page Objectを持っています。ライフサイクルを管理せずにDroneインスタンスを挿入する方法は?

@Location("/page") 
public class MyPage { 

    @Drone 
    private WebDriver driver; 

    // page methods using the driver 

} 

とページオブジェクトを使用してテストクラス。

@RunWith(Arquillian.class) 
public class MyTest { 

    @Test 
    public void test(@InitialPage MyPage page) { 
     // use page & assert stuff 
    } 

    @Test 
    public void anotherTest(@InitialPage MyPage page) { 
     // use page & assert stuff even harder 
    } 

} 

ここで、MyTestでメソッドスコープのDroneインスタンスを使用することにしました。だから私は追加...

public class MyTest { 

    @Drone 
    @MethodLifecycle 
    private WebDriver driver; 

私はテストを実行すると、私は2つのブラウザを取得し、すべてのテストがエラーで終了します。明らかに、このライフサイクル管理は修飾子としても扱われます。

はい、Myページに@MethodLifecycleを追加することも役に立ちます。しかし、これは解決策ではありません。ページはこれを気にするべきではなく、WebDriverの範囲に関係なくすべてのWebDriverで機能するはずです。無人機のライフサイクルを管理するための知識があるのはテストだけです。ページは、それが呼び出されたどんなコンテキストでも使用する必要があります。どのように達成できますか?

答えて

0

これが答えである可能性があります

public class MyPage { 

    @ArquillianResource 
    private WebDriver driver; 

しかし、私は、これは、いくつかのドローン特有の豊かをスキップすることを恐れています。また、複数のDroneインスタンスが存在するときに正しく解決されるかどうかはわかりません。

関連する問題