如何在很多线程中执行 selenium 脚本?

How to execute selenium script in a lot of threads?

我喜欢在很多线程中测试我的网站。但是当我尝试这样做时,我发现了一个问题。我喜欢的所有动作都发生在上次打开的 window 中。所以,第一个 window 只是停留在后台。

public class Core extends Thread{

    private static FirefoxDriver firefoxDriver;

    public Core(){
        firefoxDriver = new FirefoxDriver();
    }

    @Override
    public void run() {
        firefoxDriver.get("https://google.com/");
        firefoxDriver.close();
    }
}

public class Main {
  
    public static void main(String[] args) throws AWTException {
        
        System.setProperty("webdriver.gecko.driver", "/home/riki/Downloads/geckodriver-v0.30.0-linux64/geckodriver");

        Core core = new Core();
        Core core2 = new Core();

        core.start();    // This thread is stuck in back
        core2.start();   // This thread goes to google.com twice
    }
}
   

我真的不明白为什么会这样。你可以看到它here。之后代码有运行,第一个window一直挂在后面。它不关闭。当第二个线程执行完代码后关闭

这是因为您对 Forefox 驱动程序使用了静态字段。

静态意味着所有实例一个。所以在这里删除static

private FirefoxDriver firefoxDriver;

之后,每个线程都将使用它自己的 firefoxDriver 字段。

如果要修改静态字段,应谨慎使用。