2011-10-26 5 views
2

testngスイート内で実行する場合、複数のテスト/クラスに対して同じwebdriverオブジェクトを使用する方法はありますか?私が意味することは、WebDriverインスタンスをあるクラスで起動することですが、スイート内の後続のクラス/テストでも使用し続けますか?には、testngスイート内で実行しているときに複数のJavaクラスに対して同じwebdriverオブジェクトを使用する方法がありますか?

私が直面しています問題は、10のdifferectクラスはこの文を持っているということです。)

webdriverをドライバー=新しいFirefoxDriver(;

これは、パラレルモードを設定してTestNGを偽に設定しても、10の異なるインスタンスを開きます。それは本当に私のシステムメモリを吸う。

私は同じWebDriverを使用し、ブラウザとWebdriverの複数のinsntancesを使わなくても異なるクラスを実行することができます。

答えて

3

すべてのクラスを<test>タグに入れて、すべてのテストメソッドがアクセスできるように、基本クラスに格納する@BeforeTestメソッドでドライバを初期化します。

+1

「@BeforeClass」ではないはずですか? – djangofan

+1

これは、Webドライバを初期化するかどうかによって異なります。すべてのクラスが実行される前に一度だけの場合は、\ @ BeeforeTest。各クラスの前にある場合は、\ @ BeforeClassです。 –

+0

ありがとうセドリック。出来た。 –

0

あなたなら、ちょうど

driver.findElements(By.TagName('h1')); 
-1

にその時点からドライバを参照し、私はそれがJavaであるかはよく分からないが、C#であなただけのフィールドとして

private WebDriver driver = new FirefoxDriver(); 

をwebdriverををインスタンス化テストケースを並行して実行しようとしている場合は、各テストに個別のWebdriverインスタンスを関連付ける必要があります。マルチスレッド環境では、複数のテストでインスタンスを共有することはできません。

Webdriverインスタンスの初期化を抽象化する場合、いくつかの方法があります。 Webdriverのインスタンスを構築する基本的なTestCaseクラスを記述することもできます。それぞれのテストケースは、TestCaseクラスをその行に沿って拡張します。

TestNGでは、testng.xmlにパラメータ-threadcountを指定することでスレッド数を制御できます。ドキュメントhereを確認してください。プログラムでTestNGを起動する場合は、setThreadCountメソッドを使用できます。 Javaのドキュメントhereを確認してください。

+0

返信いただきありがとうございます。 –

0

ISFWは、それをうまく処理する方法を提供します。必要に応じて新しいインスタンスを作成し、必要に応じて新しいインスタンスを作成します。ただし、セットアップとティアダウンのためのコードを書く必要はありません。プロパティファイルにブラウザの文字列を設定する必要があり、指定されたブラウザ文字列のRCまたはwebdriverを管理します。 - >持って@BeforeTestと@AfterTestブラウザを起動し、それぞれのブラウザを閉じ

Test1.java:1つのパッケージの下

-1

例:

public class Test1 { 

    public static WebDriver driver; 

    @BeforeTest 
    public void open_browser() 
    { 
     driver = new FirefoxDriver(); 
    } 

    @AfterTest 
    public void close_browser() 
    { 
     driver.close(); 
    } 
} 

ログイン。Javaの

パブリッククラスログインあなたのXMLファイルで{

@Test 
public static void logintest{ 

    Webelement ele1 = Test1.driver.findElement(...); 
} 

}

<test name = "MyTest"> 
    <classes> 
     <class name = "Test1"></class> 
     <class name = "Login"></class> 
    </classes> 
</test> 

これは、Test1のファイルで作成したドライバのインスタンスを利用します。

希望すると助かります! :)

-1

これを処理するための最良の方法は次のとおりです。

はあなただけでブラウザをinitate 1 BaseClassのを持っています。 usingsがそうで

public class Class1 extends BaseClass 
{ 
    @Test 
    public void TC1() 
     { 
      //PASS 
     } 

} 

を拡張し、-by

public class BaseClass 
{ 
    public static Webdriver driver; 
@BeforeSuite 
    public void Launch_Browser() 
    { 
    webDriver Driver= new FirefoxDriver(); 
    } 
} 

次に、あなたの他のすべてのクラスにBaseClassのを拡張します。重要なことは、WebdriverドライバをBaseClassのpublic staticとして宣言する必要があることです。

関連する問題