【问题标题】:Using findElementById("elementID") with appium for native android app. Error: "Locator strategy 'css selector" is not supported"将 findElementById("elementID") 与 appium 一起用于原生 android 应用程序。错误:“不支持定位器策略‘css 选择器’”
【发布时间】:2019-07-01 15:02:22
【问题描述】:
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”。为什么会这样?

【问题讨论】:

  • 我的第一个猜测是那些看起来不像完整的 id。请将相关页面的 uiautomator 屏幕截图添加到您的原始帖子中。另外,你最初如何声明驱动程序?
  • protected AndroidDriver&lt;AndroidElement&gt; driver; 这是驱动程序的声明方式。如果我把完整的 id 像driver.findElementById("com.android.calculator2:id/digit_9").click(); 放在一起没关系,它会返回关于 css 选择器的相同错误。

标签: java android android-ndk appium native


【解决方案1】:

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

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

基本上,如果您使用像 MavenGradle 这样的构建系统,您的项目类路径中只需要 Appium Java - 其他 jar 将通过 Transitive Dependencies 解析机制。

我还建议升级到Appium Client 7.0.0,或最新版本released

查看Appium - Code Examples - Java 以获取可用作基础的示例项目。

【讨论】:

  • 非常感谢!我没有想到检查与 Selenium 的兼容性。由于我的项目是基于 Maven 的,我只是更改了版本以匹配。
猜你喜欢
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
  • 1970-01-01
  • 2023-04-05
  • 2019-08-29
  • 2022-12-15
  • 2019-06-08
相关资源
最近更新 更多