更具体地说,在单个WebDriver / WebElement上同时执行多个操作是否安全?即像这样的东西
WebDriver driver; //driver initialized somehow final WebElement elem = driver.findElement(By.cssSelector("#elementID")); //simplified for example, but in real code I'd be storing the results of these calls new Thread() { @Override public void run() { elem.isDisplayed(); } }.run(); new Thread() { @Override public void run() { elem.isEnabled(); } }.run();
我自己尝试过,在本地交互时没有问题,但是在对远程selenium网格进行相同操作时遇到间歇性问题。
我不确定我遇到的问题是来自Selenium本身,还是Selenium很好,并且这是我使用的托管网格提供程序的局限性。 Selenium线程对于使用Python进行抓取是否安全?提到selenium可能不是线程安全的,但我找不到任何确认。
在这里回答这个问题
“ WebDriver不是线程安全的。话虽如此,如果您可以序列化对底层驱动程序实例的访问,则可以在多个线程中共享一个引用。这是不建议的。另一方面,您可以/ can /实例化一个WebDriver每个线程的实例。”