我可以使用一个驱动程序在Selenium(Java)中并行运行多个测试吗?

我可以使用一个驱动程序在Selenium(Java)中并行运行多个测试吗?,java,selenium,testing,Java,Selenium,Testing,按照我的项目结构,所有函数都调用一个静态驱动程序,因为我没想到我需要同时做很多测试。现在我使用TestNG,现在它打开了多个测试,并在其中一个窗口中执行这两个测试操作,有效地破坏了测试 这是因为我所做的所有基本函数(如clickbutton、login user等)都从我命名为DriverManager的类中调用了静态驱动程序。要改变这一点,我必须基本上重构整个代码,将驱动程序作为大多数函数的入口对象 我有没有办法只使用一个驱动程序就使用TestNG并行地进行测试?是的,您可以这样做, Yes

按照我的项目结构,所有函数都调用一个静态驱动程序,因为我没想到我需要同时做很多测试。现在我使用TestNG,现在它打开了多个测试,并在其中一个窗口中执行这两个测试操作,有效地破坏了测试

这是因为我所做的所有基本函数(如clickbutton、login user等)都从我命名为DriverManager的类中调用了静态驱动程序。要改变这一点,我必须基本上重构整个代码,将驱动程序作为大多数函数的入口对象

我有没有办法只使用一个驱动程序就使用TestNG并行地进行测试?

是的,您可以这样做,
Yes you can do it ,

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="tests" thread-count="2">
    <test name="Test">
        <classes>
            <class name="Parallel"/>
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->



This is XML file 

Parallel is class name 

You can do parallel by **method,tests,classes and instances** 


following code for run test parallel

    import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.Test;

public class Parallel {


   WebDriver driver;

    @Test
    public void test1() {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\User\\IdeaProjects\\SeleniumParallelTestingFinal\\src\\main\\resources\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();


        driver.manage().window().maximize();
        driver.get("https://www.google.com/");
        driver.findElement(By.name("q")).sendKeys("Testing");

    }

    @Test
    public void test2() {
        System.setProperty("webdriver.gecko.driver","C:\\Users\\User\\IdeaProjects\\SeleniumParallelTestingFinal\\src\\main\\resources\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();


        driver.manage().window().maximize();
        driver.get("https://www.google.com/");
        driver.findElement(By.name("q")).sendKeys("Testing");
    }

    public static void main(String[] args) throws Exception {

        System.out.println("WELCOME TO WORLD JESUS");



    }


    @AfterMethod
    public void tearDown()
    {

    }
}
这是XML文件 Parallel是类名 您可以通过**方法、测试、类和实例**进行并行 以下代码用于并行运行测试 导入org.openqa.selenium.By; 导入org.openqa.selenium.WebDriver; 导入org.openqa.selenium.chrome.ChromeDriver; 导入org.openqa.selenium.firefox.FirefoxDriver; 导入org.testng.annotations.AfterMethod; 导入org.testng.annotations.Test; 公共类并行{ 网络驱动程序; @试验 公共void test1(){ System.setProperty(“webdriver.chrome.driver”,“C:\\Users\\User\\IdeaProjects\\SeleniumParallelTestingFinal\\src\\main\\resources\\chromedriver.exe”); WebDriver驱动程序=新的ChromeDriver(); driver.manage().window().maximize(); 驱动程序。获取(“https://www.google.com/"); 驱动程序.findElement(按名称(“q”)).sendKeys(“测试”); } @试验 公共无效测试2(){ System.setProperty(“webdriver.gecko.driver”,“C:\\Users\\User\\IdeaProjects\\SeleniumParallelTestingFinal\\src\\main\\resources\\geckodriver.exe”); WebDriver=newfirefoxdriver(); driver.manage().window().maximize(); 驱动程序。获取(“https://www.google.com/"); 驱动程序.findElement(按名称(“q”)).sendKeys(“测试”); } 公共静态void main(字符串[]args)引发异常{ System.out.println(“欢迎来到世界耶稣”); } @后置法 公共无效拆卸() { } }
不熟悉TestNG,但每个浏览器/线程需要一个驱动程序实例。您可以对多个选项卡使用一个驱动程序,但它不是并行的。有一件事是可以并行完成的。。。这是用于动作的新“滴答声”:这根本不能回答问题。每个测试都有一个
驱动程序
,这正是OP所没有的(显然,如果不进行一些认真的重构,就无法做到)。