selenium-webdriver - 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
异常,因为它匹配两者,并且由于返回类型在依赖中的类中,这怎么可能?getFullName
getText(WebElement element)
getText(By by)
findElement
T extends WebElement
WebDriver
appium
另一方面,类中也有WebElement findElement(By by);
API,但是在我的项目中添加依赖方法后,他们开始从依赖项而不是依赖项中引用类。不幸的是,两个类中的 api 具有相同的包。我不确定class from和是否可以互换使用,因为它们具有不同的自动化目的(即移动应用程序和 Web 应用程序)。如果类 from和不能互换使用,那么有没有办法强制使用依赖类而不是依赖类?WebDriver
selenium-api
appium
WebDriver
appium
selenium-api
WebDriver
org.openqa.selenium
WebDriver
appium
selenium-api
WebDriver
appium
selenium-api
WebDriver
selenium-api
appium
解决方案
- 考虑使用MobileElement而不是WebElement以避免与底层 Selenium API 发生冲突
- 确保您的项目依赖项中只有appium-java-client库,Appium 6.1.0 假定Selenium 3.12.0因此您必须完全使用这个版本的 Selenium 以避免Jar Hell所以我建议使用依赖管理解决方案,例如Maven或Gradle自动解析 Appium Java 客户端库及其所有传递依赖项。请参阅代码示例 -> Appium with Java以获取全面的信息和示例项目
推荐阅读
- visual-studio-code - 如何在 Visual Studio 代码中运行 C++ 程序
- javascript - JIMP 图像合成。加水印
- javascript - 像在播放列表中一样流式传输一组视频,没有过渡间隙
- eclipse - Eclipse Pydev 控制台输出混乱
- jquery - 如何将 ctrl-key 添加到发生的点击事件中?
- eclipse - 如何更改我的目录的当前布局,并且仍然可以构建我的 C++ 程序?
- python - 不使用按钮单击更新串行数据
- amazon-web-services - Dynamo DB 中的 AWS AppSync 简单 graphql 解析器无法正常工作,这让我发疯
- redux - 初始化存储时不触发 ROOT_EFFECTS_INIT
- r - 为什么在用 na.locf 填充 NA 后 tbf 仍然分组?