我正在使用 Webdriver 测试一个 Web 应用程序,或多或少如下所述。当测试通过时,一切都很好。但是,当其中一项测试失败时,我注意到以下 2 个问题。
a)如果一个测试失败,那么套件中的其余测试将超时而不关闭 Webdriver 实例。因此,节点机器上会保留一些过时的 webdriver 实例。
b)当其中一个测试因超时问题而失败时,该类中的所有剩余测试(因为 testng 被配置为并行运行类)失败,并出现以下异常org.openqa.selenium.remote.UnreachableBrowserException 与远程浏览器通信时出错。它可能已经死了。
我们如何解决这两个问题,这可能是网格的问题吗?任何建议都会很棒。以下是有关网格配置和环境详细信息的更多详细信息。
浏览器和版本:- Chrome 和版本是 23.0.1271.101
硒版本:- 2.28.0
网格集线器和节点属性:-
集线器启动:- java -jar /tools/grid/selenium-server-standalone-2.28.0.jar -role hub -maxSession 20 -browserTimeout 240 -remoteControlPollingIntervalInSeconds 180 -sessionMaxIdleTimeInSeconds 240 -newSessionMaxWaitTimeInSeconds 250 -timeout 30
节点启动:- java -jar /tools/grid/selenium-server-standalone-2.28.0.jar -role node -Dwebdriver.chrome.driver=/ChromeDriver/23.0.1240/chromedriver –hub http://mobygrid.dev .ebay.com:4444/grid/register
Testng.xml与 5 个线程并行运行类:-
<?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>
谢谢!