【问题标题】:Selenium Webdriver drive two browserSelenium Webdriver 驱动两个浏览器
【发布时间】:2018-08-08 21:22:39
【问题描述】:

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

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

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

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


    【解决方案1】:

    您是否尝试过创建两个不同的驱动程序变量?

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

    【讨论】:

    • 当然,我的驱动程序是在我的线程中实现的。我有两个不同的线程类(一个用于 google,另一个用于 Yahoo),所以我不使用相同的驱动程序变量。
    【解决方案2】:

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

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

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

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

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

    注意:您的while 条件有问题。条件始终为true,因此它将是infinite loop。请在您的代码中解决此问题。

    【讨论】:

    • 您好,感谢您的回答!使用 Thread.start(),我可以看到这两个浏览器同时运行。无限循环没问题,这绝对不是我线程的最终用法!
    • 好的..谢谢!
    【解决方案3】:

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

    请参考 link 了解更多关于使用 TestNG 并行执行的信息。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 2016-11-08
      • 1970-01-01
      相关资源
      最近更新 更多