appium WebDriver findElement API中的方法调用不明确

时间:2019-07-16 14:53:00

标签: selenium-webdriver java-8 appium

我正在使用在<T extends WebElement> T findElement(By by);类上具有WebDriver方法的appium 6.1.0。在自动化测试的某个地方,我有以下API-

protected String getText(WebElement element) {
    return getText(element, Config.LOAD_WAIT);
}

protected String getText(By by) {
    return getText(by, Config.LOAD_WAIT);
}

getText方法被测试调用为-

public String getFullName() {
    return getText(driver.findElement(By.cssSelector(".basicDataSection)))
}

但是使用WebDriver依赖中的appium类会在getFullName方法上引发异常,因为方法调用与getText(WebElement element)getText(By by)都匹配,因此方法调用不明确可能因为findElement依赖项中T extends WebElement类的WebDriver返回类型是appium吗?

另一方面,WebElement findElement(By by);的{​​{1}}类中也有WebDriver API,但是在我的项目中添加了selenium-api依赖方法后,它们开始引用{ {1}}类来自appium依赖关系,而不是来自WebDriver依赖关系。不幸的是,两个类中的appium api具有相同的软件包selenium-api。 我不确定WebDriverorg.openqa.selenium中的WebDriver类是否可以互换使用,因为它们具有不同的自动化目的(即移动应用程序和Web应用程序)。如果appiumselenium-api中的WebDriver类不能互换使用,那么有一种方法可以强制使用appium依赖中的selenium-api类而不是{ {1}}依赖吗?

1 个答案:

答案 0 :(得分:0)

  1. 请考虑使用MobileElement而不是WebElement来避免与基础Selenium API发生冲突
  2. 请确保您的项目依赖项中仅包含appium-java-client库,Appium 6.1.0假定使用Selenium 3.12.0,因此您必须完全使用此版本的Selenium以避免Jar Hell,因此我建议使用MavenGradle之类的依赖项管理解决方案来自动解析Appium Java客户端库及其所有transitive dependencies。有关全面的信息和示例项目,请参见Code Examples -> Appium with Java