不能';不能在Appium+;Robot框架,其中Appium将其显示的错误消息记录为contextId:';多重:真';

不能';不能在Appium+;Robot框架,其中Appium将其显示的错误消息记录为contextId:';多重:真';,appium,robotframework,appium-android,selenium2library,Appium,Robotframework,Appium Android,Selenium2library,使用机器人框架,结合Appium和Selenium2库/SeleniumLibrary。如果我尝试使用一些xpath定位器运行脚本,如下所示 AppiumLibrary.Click Element xpath=//android.widget.TextView[@text='Site Control'] 在关键字文件中,然后获取下面的错误消息 错误消息: Finding '//android.widget.EditText[@index='4']

使用机器人框架,结合Appium和Selenium2库/SeleniumLibrary。如果我尝试使用一些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本机代码中维护UI元素的通用变量名,以重用它,为了克服此错误,添加UiAutomator2功能,如下所示:

适用于带Appium的Java(Appium Java客户端)

用于机器人框架(机器人应用程序库)


为什么会出现这个错误?如果我们的设备/仿真器操作系统版本>=6,则Appium不支持UiAutomator自动化。我用的是7+。因此,我必须切换到UiAutomator2,并确保JAVA\u HOME和ANDROID\u HOME设置正确。

定位器只工作一次,第二次执行。多个:在Appium日志中显示True错误,并暂停自动化,直到手动停止我尝试了所有abs和相关xpath组合
capabilities.setCapability("automationName", "UiAutomator2");
automationName=UiAutomator2 (inside open application keyword)