Java 如果实例化 Selenium WebDriver,则线程失败
Java thread fails if Selenium WebDriver is instantiated
我有一个执行以下代码的 JavaFX 按钮(简化)
Task<List<PubListEntry>> theTask = new Task<List<PubListEntry>>() {
@Override
protected List<PubListEntry> call() {
dh = (DataHandler) selectedSource.getSourceClass().newInstance();
return dh.extractInformation(...);
}
};
Thread t= new Thread(theTask );
t.start();
它将根据 ComboBox 的选定条目创建一个 class 的新实例,然后调用一个方法。在其中一个 classes 中,我想使用 Selenium 来控制浏览器 window。
public class Source1 implements DataHandler {
public Source1 () {
Browser.start();
}
@Override
public List<PubListEntry> extractInformation(...) {...}
}
静态方法 start
看起来像这样。
static void start() {
if (driver == null) {
driver = new ChromeDriver();
driver.manage().window().maximize();
}
}
但是如果我实例化Source1
,任务将会失败。所以我认为它与Selenium有关,但我无法弄清楚它是什么。以前 Browser
class 是抽象的 class,我不得不扩展 Source1
。作为抽象 class,一切都很好。现在我更喜欢它是否是一个独立的 class。有人知道 Thread/Task 为什么会失败吗?
我们不要重新发明轮子。
以下是我过去的一些参考资料:
https://groups.google.com/forum/m/#!topic/webdriver/cw_awztl-IM
Can Selenium use multi threading in one browser?
希望对您有所帮助。
我有一个执行以下代码的 JavaFX 按钮(简化)
Task<List<PubListEntry>> theTask = new Task<List<PubListEntry>>() {
@Override
protected List<PubListEntry> call() {
dh = (DataHandler) selectedSource.getSourceClass().newInstance();
return dh.extractInformation(...);
}
};
Thread t= new Thread(theTask );
t.start();
它将根据 ComboBox 的选定条目创建一个 class 的新实例,然后调用一个方法。在其中一个 classes 中,我想使用 Selenium 来控制浏览器 window。
public class Source1 implements DataHandler {
public Source1 () {
Browser.start();
}
@Override
public List<PubListEntry> extractInformation(...) {...}
}
静态方法 start
看起来像这样。
static void start() {
if (driver == null) {
driver = new ChromeDriver();
driver.manage().window().maximize();
}
}
但是如果我实例化Source1
,任务将会失败。所以我认为它与Selenium有关,但我无法弄清楚它是什么。以前 Browser
class 是抽象的 class,我不得不扩展 Source1
。作为抽象 class,一切都很好。现在我更喜欢它是否是一个独立的 class。有人知道 Thread/Task 为什么会失败吗?
我们不要重新发明轮子。 以下是我过去的一些参考资料: https://groups.google.com/forum/m/#!topic/webdriver/cw_awztl-IM
Can Selenium use multi threading in one browser?
希望对您有所帮助。