【问题标题】:‘page should contain element’ not work for uiautomator2“页面应包含元素”不适用于 uiautomator2
【发布时间】:2019-12-09 14:17:13
【问题描述】:

我使用robotframework + appium,最近我将automationName设置为UiAutomator2,我发现UI自动化测试用例运行速度很快,但不幸的是,有些关键字不起作用,比如页面应该包含元素,我这样使用:

${status} | Run Keyword And Return Status | Page Should Contain Element | &{locator_login_link}[${PLATFORM}]

Run Keyword If ‘${status}’==‘True’ Run Keywords Click Element &{locator_edit_profile_icon}[${PLATFORM}]

但是即使在手机上显示元素也无法捕获元素&{locator_login_link}[${PLATFORM}],然后我将“页面应包含元素”更改为“等到元素可见”,然后它就可以工作了!

顺便说一句,必须在每个“点击元素”之前添加“等待元素可见”,否则会失败,UiAutomator2 是否不能很好地支持机器人框架中的 appiumlibray?

【问题讨论】:

  • 那么,实际上你的问题是什么?为什么它不能在没有“等到元素可见”的情况下首先调用?还是?
  • @Todor Minakov,对不起,我的描述不清楚,我的问题是 UiAutomator2 不支持 appiumlibrary 吗?例如:在我的脚本中,比如单击登录按钮,它在 uiautomator1 上正常工作,但在 uiautomator2 上没有响应

标签: appium robotframework


【解决方案1】:

BYI,必须在每次“点击”之前添加“等到元素可见” element' 否则会失败

您不必显式调用该等待。您应该能够覆盖“点击元素”方法(或更改它)以在每次点击之前调用“等待元素可见”。

我真的推荐这种方法,因为它会使您的 UI 测试更加稳定。应在 webdriver 执行所有 UI 交互之前调用显式等待。

【讨论】:

  • 我不是很明白,你能举个例子吗?
【解决方案2】:

或者,您可以在 common.robot 等资源文件中创建一组通用关键字。比如.....

Click Element When Visible
[Arguments]  ${element}
  Wait Until Element Is Visible  ${element}
  Click Element  ${element}

Get Element Text When Visible
[Arguments]  ${element}
  Wait Until Element Is Visible  ${element}
  ${txt}=  Get Text  ${element}
[Return]  ${txt}

然后在需要单击元素或获取文本等时使用它们...

【讨论】:

    猜你喜欢
    • 2019-08-05
    • 2014-05-08
    • 2011-09-01
    • 2011-03-15
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多