如何在很多线程中执行 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
字段。
如果要修改静态字段,应谨慎使用。
我喜欢在很多线程中测试我的网站。但是当我尝试这样做时,我发现了一个问题。我喜欢的所有动作都发生在上次打开的 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
字段。
如果要修改静态字段,应谨慎使用。