无法在 Appium + Robot Framework 中使用 Xpath,其中在 Appium Log 中显示的错误消息为 contextId: 'multiple: true'

Couldn't able to use Xpath in Appium + Robot Framework where in Appium Log its displaying error message as contextId: ' multiple: true'

结合 Appium 和 Selenium2Library/SeleniumLibrary 使用 Robot Framework。如果我尝试 运行 我的脚本使用一些 xpath 定位器,如下所示

 AppiumLibrary.Click Element                       xpath=//android.widget.TextView[@text='Site Control'] 

在关键字文件中,然后在错误消息下方。

错误信息:

Finding '//android.widget.EditText[@index='4']' using 'XPATH' with the contextId: '' multiple: true

Appium 日志:

 [debug] [35m[AndroidBootstrap][39m [BOOTSTRAP LOG] [debug] Got command of type ACTION
 [debug] [35m[AndroidBootstrap][39m [BOOTSTRAP LOG] [debug] Got command action: find
 [debug] [35m[AndroidBootstrap][39m [BOOTSTRAP LOG] [debug] Finding '//android.widget.EditText[@index='4']' using 'XPATH' with the contextId: '' multiple: true

机器人脚本:

 Click on Site Control and Create Case
      AppiumLibrary.Click Element                       xpath=//android.widget.TextView[@text='Site Control']
      sleep                                             ${timeout}
      AppiumLibrary.click element                       xpath=//android.widget.EditText[@index='4']
      sleep                                             ${timeout}
      AppiumLibrary.input text                          xpath=//android.widget.EditText[@text='Intallationid']   site212

这意味着您的定位器不是那么独特。请尝试添加更多独特的属性,例如 //android.widget.EditText[@index='4' 和 @attribute='value']

终于找到了这个错误信息的答案。问题是开发团队正在为他们的 React Native 代码中的 UI 元素维护公共变量名称以重用它,并克服此错误是添加 UiAutomator2 功能,如下所示:

对于 Java 使用 Appium(Appium Java 客户端)

capabilities.setCapability("automationName", "UiAutomator2");

对于机器人框架(机器人 AppiumLibrary)

automationName=UiAutomator2 (inside open application keyword)

为什么会出现这个错误?如果我们的 device/emulator OS 版本 >= 6,Appium 不支持 UiAutomator 自动化。我使用的是 7+。所以,我切换到 UiAutomator2 并确保 JAVA_HOME & ANDROID_HOME 设置正确。