java - 将 findElementById("elementID") 与 appium 一起用于原生 android 应用程序。错误:“不支持定位器策略‘css 选择器’”
问题描述
I am using Appium installed over npm (version 1.13.0), Selenium (3.8.1), Appium client for java (4.1.2).
使用 UIAutomationViewer 我可以找到我想要点击的元素的 ID。但是当我运行代码时,使用 od ID,selenium 正试图用 css 找到它们。
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME,
"PixelTest");
capabilities.setCapability("platformName","Android");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,
"UiAutomator1");
capabilities.setCapability(MobileCapabilityType.NO_RESET, true);
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator");
driver = new AndroidDriver<AndroidElement>(new URL(url), capabilities);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.findElementById("digit_9").click();
driver.findElementById("digit_6").click();
driver.findElementById("pad_operator").click();
driver.findElementById("digit_1").click();
driver.findElementById("digit_0").click();
driver.findElementById("eq").click();
我遇到的错误:“org.openqa.selenium.InvalidSelectorException: Locator Strategy 'css selector' is not supported for this session”。为什么会发生这种情况?
解决方案
您正在使用不兼容的Selenium Java和Appium Java客户端组合。
查看Appium 4.1.2 的依赖项,您似乎需要Selenium 2.53.1,其他版本可能由于JAR Hell而无法工作。
基本上,如果您使用Maven或Gradle之类的构建系统,您的项目类路径中只需要Appium Java - 其他 jar 将通过传递依赖机制解决。
我还建议升级到Appium Client 7.0.0或任何最新发布的版本。
查看Appium - 代码示例 - Java以获得可以用作基础的示例项目。
推荐阅读
- python - AppEngine Python 3.7标准环境上的Websockets?
- asp.net-core - ASP.Net Core 中是否有使用 XML 配置的单一开关?
- regex - 鉴于使用 RegEx 找到关键字,如何用两个引号突出显示整个引号?
- javascript - 如何在开始和结束时自定义 xAxis 标签?
- python - /post/ 处的 NoReverseMatch
- r - 每次在 R 中“重新出现”时,增加组的行号
- javascript - 在 TypeScript 中导入时出现“Uncaught SyntaxError: Unexpected token {”
- inheritance - 没有方法的子接口
- java - 为什么使用相同的时区获得不同的 localDate
- ruby-on-rails - 如何在 ruby 的 link_to 中添加 tabindex