硒化物和博尼加西亚

Selenide and bonigarcia

我正在尝试将 Selenide 和 bonigarcia 与多个网络驱动程序一起使用,例如 Chrome、Mozilla、Edge 等。 这就是我所做的:

public static Selenide driver;

public static void runBrowser(String browserName, String url) throws Exception {
    if(browserName.equals("Chrome")) {
        WebDriverManager.chromedriver().browserVersion(browserConfiguration.chromeVersion).setup();
        Configuration.startMaximized = true;
        driver.open(url);
    }
    else if(browserName.equals("Firefox")) {
        WebDriverManager.firefoxdriver().browserVersion(browserConfiguration.firefoxVersion).setup();
        Selenide.open(url);
    }
    else if(browserName.equals("Edge")) {
        WebDriverManager.edgedriver().browserVersion(browserConfiguration.edgeVersion).setup();
        driver.open(url);
    } else {
        throw new Exception("Something went wrong opening browser");
    }
}

但是,当我尝试使用“Firefox”或“Edge”参数调用该方法时,它总是在 chrome 上运行。因此,每次我调用该方法时,chrome 的 Web 驱动程序都是 运行。

我用 Selenium 做到了,它们之间的区别在于我使用 WebDriver.get(url) 而不是 Selenide.open(url),当我用“Firefox”或“Edge”调用方法时它工作正常" 参数.

有什么想法吗?

**编辑:**

我添加了 Configuration.browser = FirefoxDriverFactory.class.getName();,现在看起来像这样:WebDriverManager.firefoxdriver().browserVersion(browserConfiguration.firefoxVersion).setup(); Configuration.browser = FirefoxDriverFactory.class.getName(); Selenide.open(url); 它将打开我想要的任何浏览器,Chrome、Mozilla、Edge 等。 但是,不知何故,我不认为这是一个真正的解决方案。我什至不知道我对添加 FirefoxDriverFactory.class.getName() 做了什么以及为什么它现在起作用了。

Selenide 已经包含来自 bonigarcia 的 WebDriverManager。

您可以选择浏览器

Configuration.browser = "firefox";

或设置 SystemProperty selenide.browser,例如-Dselenide.browser=firefox

您不需要任何工厂、WebDriverManager 调用等