robotframework - 如果为 2 个不同的页面运行关键字 - 始终未检测到第二个元素并且失败
问题描述
正在测试的应用程序具有以下页面流可能性:
- app launch -> PAGE1 (input pin1) -> DONE
or
- app launch -> PAGE1 (input pin1) -> PAGE2 (input pin2) -> DONE
or
- app launch -> PAGE2 (input pin2) -> PAGE1 (input pin1) -> DONE
我已经编写了测试用例来等待元素然后执行不同的关键字。
*** Settings ***
Library AppiumLibrary
Resource ../Resources/nine-res-work.robot
Resource ../Resources/common-mobile.robot
*** Variables ***
${LOGIN-BUTTON-NUMBER-1} ${ANDROID-WIDGET-TEXT-VIEW}\[@resource-id="${PREFIX-ID}btn_number" and @text="1"]
${LOGIN-BUTTON-NUMBER-2} ${ANDROID-WIDGET-TEXT-VIEW}\[@resource-id="${PREFIX-ID}btn_number" and @text="2"]
${LOGIN-PAGE1} ${ANDROID-WIDGET-TEXT-VIEW}\[@resource-id="${PREFIX-ID}headerText" and @text="Enter your PIN."]
${LOGIN-PAGE2} ${ANDROID-WIDGET-TEXT-VIEW}\[@resource-id="${PREFIX-ID}headerText" and @text="Enter your passcode."]
*** Keywords ***
Input PAGE1 Passcode
Tap ${LOGIN-BUTTON-NUMBER-1}
Input PAGE2 Passcode
Tap ${LOGIN-BUTTON-NUMBER-2}
*** Test Cases ***
Launch App
Launch Application
Sleep 5s
Input Password
${PAGE1}= Run Keyword And Return Status Page Should Contain Element ${LOGIN-PAGE1}
${PAGE2}= Run Keyword And Return Status Page Should Contain Element ${LOGIN-PAGE2}
Run Keyword If ${PAGE1} Input PAGE1 Passcode
Sleep 15s
Run Keyword If ${PAGE2} Input PAGE2 Passcode
错误发生在
Page Should Contain Element ${LOGIN-PAGE2} but screenshot is page 1
解决方案
在这篇文章中:
${PAGE1}= Run Keyword And Return Status Page Should Contain Element ${LOGIN-PAGE1}
${PAGE2}= Run Keyword And Return Status Page Should Contain Element ${LOGIN-PAGE2}
,您正在检查此 LOGIN-PAGE1,然后立即 - 是 2。
假设它是 1,并且变量设置为 True - 在检查 LOGIN-PAGE2 之前您没有采取任何行动,这会立即发生。阅读您的描述,它可能只是其中之一 - 因此您所说的错误实际上是预期的状态,屏幕截图来自第 1 页。
为了实现这个逻辑:
- app launch -> PAGE1 (input pin1) -> PAGE2 (input pin2) -> DONE
or
- app launch -> PAGE2 (input pin2) -> PAGE1 (input pin1) -> DONE
,这段代码应该做:
Run Keyword If ${PAGE1} and not ${PAGE2} Run Keywords Input PAGE1 Passcode AND Sleep 15s AND Input PAGE2 Passcode
... ELSE IF not ${PAGE1} and ${PAGE2} Run Keywords Input PAGE2 Passcode AND Sleep 15s AND Input PAGE1 Passcode
... ELSE Fail Unexpected state. # both variables are false, or both - true, which is not by design
推荐阅读
- php - 如何在元查询中使用 REGEX。
- python - 如何在一天内使我的随机高斯分布
- bash - Jenkins 运行时输入获取 bash 脚本
- ios - iOS 9:扩展程序在达到 5mb 内存使用时崩溃
- java - 在 RxJava 和 Retrofit 中链接 api 调用
- google-apps-script - 部署为 Web 应用程序的 Google Apps 脚本的身份验证问题
- android - 将其他登录的共享首选项值更改为 null
- java - vaadin 8 FilesystemContainer 替代品
- c# - 通过传递要在实体框架中动态过滤的列来选择列上的不同值
- java - 无法将变量传递给其他类