我正在使用 TestNG 和 Selenium 来执行并行测试。这在 Firefox 和 Chrome 中效果很好,但在 IE 中会中断。我让网络驱动程序执行的步骤如下:
- 使用来自 testng.xml 的参数创建浏览器实例(见下文)
- 从测试用户凭据池中选择一个可用用户
- 用户已登录
- 测试继续
当 IE 启动它的实例时,它们都被分配了同一个用户。此外,所有实例似乎都在争夺哪一个拥有焦点。(相反,在 Firefox 和 Chrome 中,所有实例都被适当地分配了自己的用户,并且不会争夺焦点。)
因为每个 IE 实例都使用相同的用户凭据,所以我得到了测试冲突,并且因为它们争夺哪个实例具有焦点,所以由于 waitForElementPresent 命令,我得到了 Selenium TimeoutExceptions。
我的直觉是 IE 根本无法同时打开多个唯一实例。谁能证实我的怀疑或指导我如何解决这个问题?感谢您的帮助!!
作为参考,这是我的 testng.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="6" verbose="0" name="Command line suite" parallel="tests">
<!-- IE Tests -->
<test name="SourceBoxUIIe" preserve-order="true">
<parameter name="browser" value="ie"/>
<classes>
<class name="org.familysearch.links.uitests.SourceBoxUITest"/>
</classes>
</test>
<test name="EditPageIe" preserve-order="true">
<parameter name="browser" value="ie"/>
<classes>
<class name="org.familysearch.links.uitests.EditPageUITest"/>
</classes>
</test>
<test name="LinksGadgetPageIe" preserve-order="true">
<parameter name="browser" value="ie"/>
<classes>
<class name="org.familysearch.links.uitests.LinksGadgetPageUITest"/>
</classes>
</test>
<test name="AdminChangeLogIe" preserve-order="true">
<parameter name="browser" value="ie"/>
<classes>
<class name="org.familysearch.links.uitests.AdminChangeLogPageUITest"/>
</classes>
</test>
<test name="AttachedToPageIe" preserve-order="true">
<parameter name="browser" value="ie"/>
<classes>
<class name="org.familysearch.links.uitests.AttachedToPageUITest"/>
</classes>
</test>
<test name="ChangeLogIe" preserve-order="true">
<parameter name="browser" value="ie"/>
<classes>
<class name="org.familysearch.links.uitests.ChangeLogUITest"/>
</classes>
</test>
<!-- Firefox Tests Would Be here -->
<!-- Chrome Tests Would Be Here-->
<!-- Command line test -->
</suite> <!-- Command line suite -->