TestNG xmlファイルを使用して、テストキューと環境パラメータを管理します。 WebdriverManagerライブラリを使用して、システム内のドライバを登録したいと考えています。しかしスレッド数が1以上の場合、ドライバは正しく登録されません。下記を参照してください。WebdriverManagerを使用して複数のテストスレッドにドライバを登録する際のエラー
テスト1:ここinstanseについては
は、テストの設定やドライバのインスタンス化の一例である
<suite name="project">
<test name = "Wiki search tests" verbose="1" parallel="true">
<parameter name="browserName" value="firefox" />
<classes>
<class name="project.tests.WikiSearchTest"/>
</classes>
</test>
</suite>
テスト2:
<suite name="project">
<test name = "Wiki authorization tests" verbose="1" parallel="true">
<parameter name="browserName" value="chrome" />
<classes>
<class name="project.tests.LoginTest"/>
</classes>
</test>
</suite>
あなたが見ることができるように、両方の「browserNameを持っています"パラメタですが、値は異なります。試験基本クラスに登録するドライバの 例:設定
private static final CountDownLatch latch = new CountDownLatch(1);
@Parameters({"browserName"})
@BeforeTest
public void setUp(@Optional String browserName) throws InterruptedException{
switch (browserName) {
case "firefox" :
FirefoxDriverManager.getInstance().setup();
latch.countDown();
System.out.println(" in firefox");
break;
case "chrome" :
ChromeDriverManager.getInstance().setup();
latch.countDown();
System.out.println(" in chrome");
break;
}
latch.await();
シュアプラグインスレッド:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire.version}</version>
<configuration>
<properties>
<property>
<name>suitethreadpoolsize</name>
<value>2</value>
</property>
試験はsuitethreadpoolsizeプロパティの値= 1で実行すると、すべてが完璧に動作:
Running TestSuite
[2017-04-10 11:32:45:490] [main] INFO BrowserManager - Reading https://chromedriver.storage.googleapis.com/ to seek [chromedriver]
[2017-04-10 11:32:46:172] [main] INFO BrowserManager - Latest version of [chromedriver] is 2.29
[2017-04-10 11:32:46:190] [main] INFO BrowserManager - Exporting webdriver.chrome.driver as C:\Users\bnesteruk\.m2\repository\webdriver\chromedriver\win32\2.29\chromedriver.exe
in chrome
Starting ChromeDriver 2.29.461591 (62ebf098771772160f391d75e589dc567915b233) on port 11014
[2017-04-10 11:32:49:314] [main] INFO BrowserManager - Reading https://api.github.com/repos/mozilla/geckodriver/releases to seek [wires, geckodriver]
[2017-04-10 11:32:49:590] [main] INFO BrowserManager - Latest version of [wires, geckodriver] is 0.15.0
[2017-04-10 11:32:49:649] [main] INFO BrowserManager - Exporting webdriver.gecko.driver as C:\Users\bnesteruk\.m2\repository\webdriver\geckodriver\win64\0.15.0\geckodriver.exe
in firefox
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.831 sec - in TestSuite
を
問題:
私は、スレッドが確実なプラグインでの1以上を数える設定した場合、
<property>
<name>suitethreadpoolsize</name>
<value>4</value>
</property>
両方.setup()メソッドは、並行して実行し、BrowserManagerの中webdriverをの静的インスタンスは、単に最後のブラウザ名(geckodriverで置き換えられているようです私の例)
[2017-04-10 11:38:00:726] [pool-1-thread-1] INFO BrowserManager - Reading https://api.github.com/repos/mozilla/geckodriver/releases to seek [wires, geckodriver]
[2017-04-10 11:38:00:726] [pool-1-thread-2] INFO BrowserManager - Reading https://api.github.com/repos/mozilla/geckodriver/releases to seek [wires, geckodriver]
[2017-04-10 11:38:01:301] [pool-1-thread-2] INFO BrowserManager - Latest version of [wires, geckodriver] is 0.15.0
[2017-04-10 11:38:01:301] [pool-1-thread-1] INFO BrowserManager - Latest version of [wires, geckodriver] is 0.15.0
[2017-04-10 11:38:01:361] [pool-1-thread-2] INFO BrowserManager - Exporting webdriver.gecko.driver as C:\Users\bnesteruk\.m2\repository\webdriver\geckodriver\win64\0.15.0\geckodriver.exe
[2017-04-10 11:38:01:361] [pool-1-thread-1] INFO BrowserManager - Exporting webdriver.gecko.driver as C:\Users\bnesteruk\.m2\repository\webdriver\geckodriver\win64\0.15.0\geckodriver.exe
in chrome
in firefox
[WARNING] [11:38:01.496] The path to the driver executable must be set by the webdriver.chrome.driver system property; for more information, see https://github.com/SeleniumHQ/selenium/wiki/ChromeDriver. The latest version can be downloaded from http://chromedriver.storage.googleapis.com/index.html
私は間違った方法でCountDownLatchを使用していると思いますか?これをどうやって止めることができますか?
あなたボニガルシアをありがとう、私は間違った方法でされたCountDownLatchを使用しているようですか?この問題の包括的なコード例を最初の質問 – BohdanN
に再現しました。 'WebDriver'インスタンス化の直前に' latch.await(); 'を呼び出しました。私はあなたの '@ Test'コードであると仮定します。あなたが提供したスニペットにはありません。 –