3

以下に説明するように、多かれ少なかれWebdriverを使用してWebアプリケーションをテストしています。テストに合格すると、すべて問題ありません。ただし、テストの 1 つが失敗したときに、以下の 2 つの問題に気付きました。

a) 1 つのテストが失敗した場合、スイート内の残りのテストは、Webdriver インスタンスを閉じずにタイムアウトします。そのため、ノード マシンに webdriver の古いインスタンスがいくつか残ります。

b) テストの 1 つがタイムアウトの問題で失敗すると、そのクラスの残りのすべてのテスト ( testng がクラスを並行して実行するように構成されているため) が以下の例外で失敗します。死んでしまったかもしれません。

これらの問題の両方を修正するにはどうすればよいですか? これはグリッドの問題でしょうか? どんな提案も素晴らしいでしょう。以下は、グリッド構成と環境の詳細に関する詳細です。

ブラウザとバージョン:- Chrome とバージョンは 23.0.1271.101 です

セレンのバージョン:- 2.28.0

グリッド ハブとノードのプロパティ:-

ハブの開始:- java -jar /tools/grid/selenium-server-standalone-2.28.0.jar -role ハブ -maxSession 20 -browserTimeout 240 -remoteControlPollingIntervalInSeconds 180 -sessionMaxIdleTimeInSeconds 240 -newSessionMaxWaitTimeInSeconds 250 -timeout 30

ノードの開始:- java -jar /tools/grid/selenium-server-standalone-2.28.0.jar -role ノード -Dwebdriver.chrome.driver=/ChromeDriver/23.0.1240/chromedriver –hub http://mobygrid.dev .ebay.com:4444/グリッド/登録

5 つのスレッドと並行してクラスを実行するTestng.xml :-

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<!--  <suite name="Single Group Suite"> -->
<suite name="Single Group Suite" parallel="classes" thread-count="5">
<test name="Single Group Test Run" preserve-order="false">
<groups>
    <define name="completetests">
              <include name="ViewItem"/>
              <include name="ViewItem2"/>
              <include name="ViewItem3"/>
            </define>
               <run>
<include name="@GROUP@" />
<include name="init" />
<exclude name="noRun" />
</run>
</groups>
<classes>
<class name="com.tabletweb.test.tests.ViewItemPageTests" /> 
                                        <class name="com.tabletweb.test.tests.ViewItemPageTests2" /> 
                                        <class name="com.tabletweb.test.tests.ViewItemPageTests3" /> 
</classes>
</test>
</suite>

ありがとう!

4

1 に答える 1

3

グリッドで実行するためのヒントを見てください:あなたの問題はそこで説明されているもののように聞こえます。タイミング構成を修正することも役立つ場合があります。

同じバージョンのグリッドとChromeDriverと並行してテストを実行し、エラーは発生しません。

于 2013-02-18T13:21:45.750 に答える