【发布时间】:2021-05-09 21:17:19
【问题描述】:
我正在尝试将 Selenide 和 bonigarcia 与多个 Web 驱动程序一起使用,例如 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 网络驱动程序都会运行。
我使用 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() 做了什么以及为什么它现在起作用了。
【问题讨论】:
标签: java selenium selenium-webdriver webdriver selenide