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?

希望对您有所帮助。