Selenium 简明教程
Selenium WebDriver - ThreadGuard
ThreadGuard 类仅适用于 Java Binding。它用于确保从其起始线程调用驱动程序。在并行模式下运行测试时会遇到 * Multiple Threading* 问题,有时这些问题不容易调试并找出错误的根本原因。在 ThreadGuard wrapper 的帮助下,我们可以避免这些问题,并在适当的时候生成正确的异常。
Example
public class DriverParallel {
//Thread main (id 1) created this driver
private WebDriver pDriver = ThreadGuard.protect(new EdgeDriver());
//Thread-1 (id 14) is calling the same driver resulting in error
Runnable run1 = () -> {
protectedDriver.get("https://www.tutorialspoint.com/selenium/practice/accordion.php");
};
Thread thread1 = new Thread(run1);
void runThreads(){
thread1.start();
}
public static void main(String[] args) {
new DriverClash().runThreads();
}
}
以上代码会产生异常。在此,pDriver 将在主线程中创建。Runnable 类用于引入新进程和新线程。两个都会遇到问题,因为主线程的内存中没有 pDriver。因此,threadGuard.protect 会生成异常。
因此,在本教程中,我们讨论了使用 Selenium WebDriver 的 ThreadGuard。