我有一个 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 的选定条目创建一个类的新实例,然后调用一个方法。在其中一个类中,我想使用 Selenium 来控制浏览器窗口。
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
类是一个抽象类,我必须扩展Source1
。作为抽象类,一切都运行良好。现在我更喜欢它是否是一个独立的类(class)。有人知道线程/任务失败的原因吗?
最佳答案
我们不要重新发明轮子。 以下是我过去的一些引用资料: https://groups.google.com/forum/m/#!topic/webdriver/cw_awztl-IM
Can Selenium use multi threading in one browser?
希望有帮助。
关于如果实例化 Selenium WebDriver,Java 线程将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49721499/