首页 > 解决方案 > 如何只拥有一个可用作 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 并且无论测试是设备测试还是网络测试,这都会起作用?

谢谢你的帮助。

标签: javaseleniumselenium-webdriverappium

解决方案


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


推荐阅读