如何只有一个可以用作Webdriver或Appiumdriver的驱动程序

时间:2019-03-12 09:02:37

标签: java selenium selenium-webdriver appium

我正在编写一个测试自动化框架,该框架将使用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,不管测试是设备测试还是网络测试,它都可以工作吗?

感谢您的帮助。

1 个答案:

答案 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)。