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