Selenium Webdriver驱动两个浏览器

问题描述 投票:0回答:3

我试图在两个不同的浏览器中运行两个不同的操作。

使用Is Selenium WebDriver thread safe?,我学到了一件重要的事情:“你/可以/另一方面为每个线程实例化一个WebDriver实例。”

所以我创建了两个线程来实例化两个驱动程序(第一个用于谷歌,第二个用于雅虎),如下所示:

public class Thread2 extends Thread{

@Override
public void run() {
    File file = new File(Thread2.class.getClassLoader().getResource("chromedriver").getPath());
    System.setProperty("webdriver.chrome.driver", file.getPath());
    WebDriver driver = new ChromeDriver();
    driver.get("http://www.yahoo.com");
    while (true) {
        driver.findElement(By.id("uh-search-box")).sendKeys("test");
    }
}

我的主类只是实现了这两个线程和调用运行函数。

有一种方法可以让两个或X个浏览器同时运行并执行不同的任务吗?

问候。

更多关于https://github.com/AMimicD/TestSeleniumThread的信息

selenium selenium-webdriver
3个回答
0
投票

你试过创建两个不同的驱动变量吗?

WebDriver driver = new ChromeDriver();
driver.get("http://www.yahoo.com");
WebDriver driver2 = new ChromeDriver();
driver2.get("http://www.whateveryouwant.com");

0
投票

我假设您希望同时并行运行测试。所以,在你的主要方法中,替换

t1.run(); 
t2.run();

t1.start(); 
t2.start();

现在您应该看到两个浏览器同时运行。

Thread.start()需要实际创建一个新线程,以便并行执行runnable的run方法。

注意:你的while状况有问题。条件总是true,因此它将是一个infinite loop。请在您的代码中修复此问题。


0
投票

将您的脚本与TestNG集成。它将帮助您以并行模式运行脚本。

请参阅link以了解有关使用TestNG进行并行执行的更多信息。

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.