我已经用Robot框架和Ride做了一些测试套件,包括几个测试用例这需要启动网络浏览器和用户登录网站。
不需要仅仅复制testsuites/testcase并对其他浏览器和用户登录进行硬编码,我如何重复使用和重新运行现有的浏览器,只需首先更改使用过的浏览器,然后用user2重新运行相同的程序?
测试用例类似于:
Open Browser - Chrome
#Open Browser - Firefox
Login1
#Login2
Do something....
#For loop already used inside the testcase
FOR ${var} IN IN RANGE 1 10
Exit For Loop If Some condition is true
${var} = Evaluate ${var} + 1
#do something until condition is true
Scroll Element Into View test_element
Set Focus To Element test_element
END
Continue test case....
关键词:
Open Browser - Chrome
Open Browser https://test.testpage.com/ chrome
......
Open Browser - Firefox
Open Browser https://test.testpage.com/ ff
......
Login1
Wait Until Element Is Visible test_Login_username
Input Text test_Login_username test.id1
Input Password test_Login_password test.password1
Click Button test_Login_LoginBtn
.....
Login2
Wait Until Element Is Visible test_Login_username
Input Text test_Login_username test.id2
Input Password test_Login_password test.password2
Click Button test_Login_LoginBtn
我知道,例如,我可以将浏览器设置为类似的循环
*** Variables ***
@{BROWSERS} Chrome ff
然后像一样在测试用例中循环它们
FOR ${Browser} IN @{BROWSERS}
Open Browser https://test.testpage.com/ ${Browser}
END
但问题是,你不能使用嵌套的循环??
的确,RF中不能有嵌套循环。用户指南中记载了一个简单的解决方法:
*** Keywords ***
Handle Table
[Arguments] @{table}
FOR ${row} IN @{table}
Handle Row @{row}
END
Handle Row
[Arguments] @{row}
FOR ${cell} IN @{row}
Handle Cell ${cell}
END
您的代码示例对我来说有点混乱,所以我不打算将其作为示例。但总的来说,我会:
- 创建一个带有for循环的关键字,该循环表示一些测试步骤
- 实现一个测试用例,其中我在不同的浏览器上循环执行来自1的关键字。for循环内部