java - 如何只拥有一个可用作 Webdriver 或 Appiumdriver 的驱动程序
问题描述
我正在编写一个测试自动化框架,该框架使用 AppiumDriver 在设备上运行一些测试,并使用 WebDriver 在 Web 上运行一些测试。
目前我正在声明两个不同的驱动程序,如下所示:
public static AppiumDriver appDriver = null;
public static RemoteWebDriver webDriver = null;
如果测试在设备上运行,则使用 appDriver,如果在 Web 上运行,则使用 webDriver。
但是,这会导致诸如 driver.quit 之类的共享方法出现问题。...我必须有更多代码来处理这两种类型的驱动程序...(例如,如果设备测试 appDriver.quit,如果 web webDriver.quit)。
有没有办法只声明一个可以根据测试要求转换为 Appiumdriver 或 Webdriver 的驱动程序(称为驱动程序)?
然后我可以使用 driver.quit 并且无论测试是设备测试还是网络测试,这都会起作用?
谢谢你的帮助。
解决方案
Selenium的层次结构如下。更多细节在这里
interface Webdriver extends SearchContext{
}
class RemoteWebDriver implements Webdriver{
}
class ChromeWebDriver extends RemoteWebDriver{
}
class FirefoxWebDriver extends RemoteWebDriver{
}
Appium的层次结构如下。更多细节在这里
java.lang.Object
org.openqa.selenium.remote.RemoteWebDriver
io.appium.java_client.AppiumDriver<T>
所以我建议你可以创建RemoteWebDriver
类的实例,然后将它相应地用于 web(selenium) 和 mobile(appium)。