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

标签 java selenium selenium-webdriver java-threads

我有一个 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/

相关文章:

java - 是否有任何库可以从 .class 文件(字节码)中提取类、方法、成员和字段依赖项名称?

java - Dockerfile Maven插件:找不到插件

java - 如何使用 Java 单击 Selenium Webdriver 中弹出窗口上的按钮

java - 如何在 Selenium 中正确实现 PageFactory 注释?

html - 如何从样式元素中获取值?

phpunit - 在 Chrome 和 IE 中启动 phpunit-selenium2 测试

java - ManagedBean 中的 primefaces 自动完成事件 itemSelect 监听器值 null

java - 获取精确时间间隔的 GPS 位置

python - Selenium 卡在 pyvirtualdisplay 上

linux - 在没有 GUI 的 Linux 机器上通过 jenkins 执行 Selenium 测试(仅限 CLI)- HEADLESS 模式