Java 线程失败,如果 Selenium WebDriver 被实例化



我有一个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,任务将失败。所以我认为它与硒有关,但我无法弄清楚它是什么。以前Browser类是一个抽象类,我必须扩展Source1。作为一个抽象类,一切都很好用。现在我更喜欢它是一个独立的班级。有没有人知道为什么线程/任务会失败?

我们不要重新发明轮子。 以下是我过去的一些参考资料: https://groups.google.com/forum/m/#!topic/webdriver/cw_awztl-IM

Selenium可以在一个浏览器中使用多线程吗?

希望对您有所帮助。

最新更新