【问题标题】:Can I use a single driver to run parallely multiple tests in Selenium (Java)?我可以使用单个驱动程序在 Selenium (Java) 中并行运行多个测试吗?
【发布时间】:2020-09-11 18:29:29
【问题描述】:

按照我的项目的结构方式,它是由调用一个静态驱动程序的所有函数组成的,因为我没想到我需要同时进行许多测试。现在我正在使用 TestNG,现在它正在打开多个测试并在其中一个窗口中执行两个测试操作,从而有效地使测试崩溃。

发生这种情况是因为我创建的所有基本功能(例如单击按钮、登录用户等)都从我命名为 DriverManager 的类中调用了一个静态驱动程序。为了改变这一点,我基本上必须重构整个代码,将驱动程序作为我所做的大多数函数的入口对象。

有什么方法可以让我只使用一个驱动程序使用 TestNG 并行进行测试?

【问题讨论】:

  • 不熟悉 TestNG,但每个浏览器/线程需要一个驱动程序实例。您可以将一个驱动程序用于多个选项卡,但它不会是并行的。有一件事可以并行完成......它是用于操作的新“刻度”:w3.org/TR/webdriver/#ticks

标签: java selenium testing


【解决方案1】:
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()
    {

    }
}

【讨论】:

  • 这根本不能回答问题。每个测试都有一个 Driver,这正是 OP 所没有的(而且显然如果不进行一些认真的重构就无法做到)。
最近更新 更多