首页 > 解决方案 > 将 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”。为什么会发生这种情况?

标签: javaandroidandroid-ndkappiumnative

解决方案


您正在使用不兼容的Selenium JavaAppium Java客户端组合。

查看Appium 4.1.2 的依赖项,您似乎需要Selenium 2.53.1,其他版本可能由于JAR Hell而无法工作。

在此处输入图像描述

基本上,如果您使用MavenGradle之类的构建系统,您的项目类路径中只需要Appium Java - 其他 jar 将通过传递依赖机制解决。

我还建议升级到Appium Client 7.0.0或任何最新发布的版本。

查看Appium - 代码示例 - Java以获得可以用作基础的示例项目。


推荐阅读