Selenium 如果我们尝试并行运行testNG类,如何在线程之间添加等待时间

Selenium 如果我们尝试并行运行testNG类,如何在线程之间添加等待时间,selenium,automated-tests,testng,Selenium,Automated Tests,Testng,我有一个testngxml文件,我想在其中以线程数=4并行运行我的测试类。但我想在这两个线程之间添加一些等待时间,这样浏览器的4个实例就不会同时打开。所有实例之间需要等待时间。有什么办法吗 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite" thread-count="2" paral

我有一个testngxml文件,我想在其中以线程数=4并行运行我的测试类。但我想在这两个线程之间添加一些等待时间,这样浏览器的4个实例就不会同时打开。所有实例之间需要等待时间。有什么办法吗

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" thread-count="2" parallel="classes">
<test name="Invoice and Expenses">
<classes>
<class name="test one" />
<class name="test two" />
<class name="test three" />
<class name="test four" /> 
</classes>
</test> 

为什么不简单地使用
Thread.sleep()

您可以将它放在
@BeforeClass
方法中,以便在每个类之前执行它。此外,如果您希望为不同的类提供单独的延迟,可以执行以下操作:

    @BeforeClass(alwaysRun = true)
    public void justDelay() throws InterruptedException 
      {

        if(this.getClass().getName().equals("test one"))
         {
           Thread.sleep(delay1);
         }


        else if(this.getClass().getName().equals("test two"))
         {
               Thread.sleep(delay2);
         }

        else
         {
               Thread.sleep(defaultdelay)
         }

        }

如果您不希望4个类同时打开浏览器,您可能也不希望它们并行运行,那么您需要按顺序运行它们

即使您在每个测试类之前添加了一些随机睡眠,因为它们仍然并行运行,您也无法避免它们在启动后同时打开浏览器


如果您确实希望4个类并行运行,我想浏览器只在测试类中的某些时刻需要,而不是在测试过程中始终需要。在本例中,这是测试代码中的资源争用问题。您需要管理资源(例如WebDriver)上的同步锁定,其中4个类需要打开浏览器,因此请求浏览器的类需要等待其他测试类释放(关闭)后才能继续,其他人也被阻止等待发布。

添加
会不会在线程之间增加一些等待时间
会破坏并行性的目的?当他打开4个浏览器实例时会有什么帮助?对不起,我没有收到你的问题。你的意思是说我应该写所有的4个类,因为这是有问题的类的数量吗?不。假设我有10个类,我想按照OP规定的顺序运行。我必须声明每个类都有if条件,这显然是最坏/极端的条件。试着给出一般的答案。