Selenium webdriver 与TestNG并行运行测试无法按预期工作

Selenium webdriver 与TestNG并行运行测试无法按预期工作,selenium-webdriver,automated-tests,testng,selenium-grid,remotewebdriver,Selenium Webdriver,Automated Tests,Testng,Selenium Grid,Remotewebdriver,出于某种原因,我需要在IE11和Chrome上并行执行测试,每个浏览器都在独立的节点机器上。这是我的testng.xml: <suite name="Parallel" parallel="tests"> <test name="Performance Test Chrome"> <parameter name="browser" value="Chrome"/> <paramete

出于某种原因,我需要在IE11和Chrome上并行执行测试,每个浏览器都在独立的节点机器上。这是我的testng.xml:

<suite name="Parallel" parallel="tests">    
    <test name="Performance Test Chrome">
        <parameter name="browser" value="Chrome"/>            
        <parameter name="remoteURL" value="http://myIP1:5555/wd/hub"/>
        <parameter name="user" value="user1"/>
        <classes>
            <class name="com.TestClass"/>
        </classes>
    </test>
    <test name="Performance Test IE11">
        <parameter name="browser" value="IE" />            
        <parameter name="remoteURL" value="http://myIP2:5555/wd/hub"/>
        <parameter name="user" value="user2"/>
        <classes>
            <class name="com.TestClass" />
        </classes>
    </test>
</suite>
Expect:测试应同时打开各自节点机器上的每个浏览器,并执行测试步骤分别使用用户登录和执行操作。。。。他们是不同节点上的不同用户,以避免会话

实际情况:浏览器实际上是在两个节点上同时打开的,但测试步骤并没有完成,他们在Chrome上的登录页面上遇到了NoSuchElementException,IE的问题更进一步,但仍然是相同的问题

注意,如果我通过设置parallel=none运行正常测试,那么每个测试标记都会成功执行。我在IntelliJ中执行测试,方法是右键单击testng.xml并运行


我是否缺少一些设置?非常感谢您的帮助。谢谢

当您想并行运行测试时,您必须确保为每个测试执行提供资源,如浏览器实例。TestNG在动态管理测试实例(例如JUnit5)时不提供这种灵活性


因此,对于每个测试运行,您通常需要新的浏览器。如果您将webdriver实例创建为静态变量或单例,那么它将不会在并行运行之间共享。这可以通过让你的司机成为本地人来解决

请提供您的代码或可复制的示例,可能是您正在使用静态的某处来保存浏览器实例。@RocketRaccoon非常感谢您,您节省了我的时间!!你是对的,我用static声明了WebDriver,它把我的设置搞砸了。你能简单地解释一下原因吗。请把你的答案贴出来,我会接受的。
@Parameters({"browser", "remoteURL", "user"})
@Test
public void parallelTest(String browser, String remoteURL, String user) {
    // test steps
}