首页 > 解决方案 > appium WebDriver findElement API中的模棱两可的方法调用

问题描述

我正在使用具有类<T extends WebElement> T findElement(By by);方法的appium 6.1.0 WebDriver。在自动化测试的某个地方,我有以下 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异常,因为它匹配两者,并且由于返回类型在依赖中的类中,这怎么可能?getFullNamegetText(WebElement element)getText(By by)findElementT extends WebElementWebDriverappium

另一方面,类中也有WebElement findElement(By by);API,但是在我的项目中添加依赖方法后,他们开始从依赖项而不是依赖项中引用类。不幸的是,两个类中的 api 具有相同的包。我不确定class from和是否可以互换使用,因为它们具有不同的自动化目的(即移动应用程序和 Web 应用程序)。如果类 from和不能互换使用,那么有没有办法强制使用依赖类而不是依赖类?WebDriverselenium-apiappiumWebDriverappiumselenium-apiWebDriverorg.openqa.seleniumWebDriverappiumselenium-apiWebDriverappiumselenium-apiWebDriverselenium-apiappium

标签: selenium-webdriverjava-8appium

解决方案


  1. 考虑使用MobileElement而不是WebElement以避免与底层 Selenium API 发生冲突
  2. 确保您的项目依赖项中只有appium-java-client库,Appium 6.1.0 假定Selenium 3.12.0因此您必须完全使用这个版本的 Selenium 以避免Jar Hell所以我建议使用依赖管理解决方案,例如MavenGradle自动解析 Appium Java 客户端库及其所有传递依赖项。请参阅代码示例 -> Appium with Java以获取全面的信息和示例项目

推荐阅读