robot 学习笔记

自动化测试框架选择: Robot Framework+Selenium2Library

Robot 总共支持四种表,分别为:Settings, Variables, Test Cases, Keywords。
测试套件(suite) 也就是测试用例(case)的集合.
Setup 环境初始化 、teadown 清除
Python的import 和 这里的Library 一样是用来引入库的。
导自定义包用Resource + 目录文件名

1.新的关键字写在Keywords区域下面, 语法和写一个测试集相似。主要的区别是你可以给你自己设定的关键字传递任意的参数。例如Login关键字通常会得到一对username 和 password的参数,然后将所有的实现方法隐藏起来。如果你的keywords特别多,或者你想让你的自定义keywords更加容易的重复使用,你可以将keywords定义块放在一个resource文件中,然后在setting中导入这个文件,如下
***Settings***
Resource resource-2.txt

2.除了 基本的新建keywords的用法,你还可以在keywords块定义Setup和Teardown.
*** Settings ***
Suite Setup Setup Actions
Suite Teardown Teardown Actions
*** Test Cases ***
Test Robot Framework Logging
Log Test Logging
*** Keywords ***
Setup Actions
Log Setup Actions done here
Teardown Actions
Log Teardown Actions done here

3.Tagging 标签
这个和keywords关系不大,就是在读测试报告的时候比较方便看出你在测什么。
*** Test Cases ***
Test Robot Framework Logging
[Tags] sample logging
Log "Test Logging"

4.有关Setup和Teardown的使用:
Test Setup Teardown : suite套件下的cases本身没有setup和teardown时才执行。有就执行本身的setup和teardown.
Suite Setup Teardown :进入和退出这个Suite执行用例前后必须分别执行一次。

5.*** Variables ***
个人理解是配置本文件下的全局变量。

6. 类似蓝图,导自定义包
*** Settings ***
Resource ./PageObjects/LandingPage.robot
*** Keywords ***
Search for product
LandingPage.Page Load

7. robotframework 几种set variable 的区别:
Set Global Variable 在所有测试套件中都可以使用此关键字定义的变量
Set Suite Variable 使用此关键字设置的变量在当前执行的测试套件的范围内随处可用。
Set Test Variable 使用此关键字设置的变量在当前执行的测试用例的范围内随处可用
Set Variable 该关键字主要用于设置标量变量。此外,它可用于将包含列表的标量变量转换为列表变量或多个标量变量。建议在创建新列表时使用创建列表。使用此关键字创建的变量仅在创建它们的范围内可用。

8.Scalar变量用$ 作为标识符,List型变量用 @ 作为标识符 dict型变量用 & 作为标识符。
dict 例如 &{GLOBAL_USER} name=root password=abc123
取值 &{GLOBAL_USER}[name]
list 例如 @{another_list} = Create List I am another list
@{MY_LIST_VARIABLE} I am list
sca 例如 ${MY_GLOBAL_SCALAR} I am Global

9.*** Keywords ***下可以写函数接口,接收参数,*** Test Cases ***下调用接口,可以传参。
例如:
*** Test Cases ***
Passing Scalar Variables
Begin Web Test with Scalar http://www.google.com chrome

*** Keywords ***
Begin Web Test with Scalar
[Arguments] ${url} ${browser}
open browser ${url} ${browser}
Close Browser

10.comment 注释 comment My note during test
run keyword and continue on failure 测试case失败继续进行下一个
repeat keyword 4 Times Say something 重复操作

11.Dialogs 库 用作用户交互;
关键字:
Execute Manual Step 用户选择PASS OR FALL
Get Selection From User 用户选择
Get Value From User 用户输入
Pause Execution 暂停测试

12.switch to window 切换window窗口

13.SSHLibrary 库 呃。。理解为socket通信
Open Connection ${HOST} timeout=1 hour
Login ${USER} ${PASSWORD}
Execute Command 在远程机器上执行命令
Should Contain a b ##a中是否包含b
close connection

19.SSHLibaray 以秘钥登录环境
Login With Public Key root /root/.ssh/id_rsa AUTH_KEY

14.RequestsLibrary 用做http请求
Create Session
Get Request
Delete All Sessions


15.Should Be Equal as strings a b 转化为字符串a和b相等

16. 测试套件也可以导入py文件使用

17.自定义.py 中声明的__all__中没有的,不能称为keywords,不能找到会ERROR

18.Log 就是print
Log to console 将message打印到控制台

19.以秘钥登录环境
Login With Public Key root /root/.ssh/id_rsa AUTH_KEY

20.[Arguments] 传入的参数

21.IF ELSE使用 : 要加 ... ##语法
[Arguments] ${variable}
Run Keyword If ${variable} == 10
... log to console ${variable} 0
... ELSE IF 0 < ${variable}
... log to console ${variable} 1
... ELSE
... log to console 1111

22.BulidIn 库共有30个关键字:
Catenate
Get Length
Length Should Be
Should (Not) Be Empty
Should (Not) Be Equal (As Strings/Integers/Numbers)
Should (Not) Match (Regexp)
Should (Not) Contain
Should (Not) Start With
Should (Not) End With
Convert To String
Convert To Bytes

23. 自动登录 元素定位分为id,name,xpath,css,jQuery,sizzle
(1)xpath 绝对路径比较简单一级一级找:xpath= /html/body/div[1]/div[2]/div[1]/div[1]/form/span[1]/input
(2)xpath 相对路径最基本元素本身找:xpath=//input[@id=”kw” ] 或者xpath=//*[@id=”kw” ]
//input表示匹配input标签的所有元素
//*表示匹配所有元素的标签
当然不限于用id,也可以xpath=//*[@type=”text”]
注意:要保证这些元素可以唯一的识别一个元素

会这两种差不多就可以解决大部分的元素定位了,再解决不了的就加上布尔

24. collection库是操作列表和字典的。、

25.xpath 学习 (w3school)
/ 从根节点选取
// 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

谓语:用来查找某个特定节点或者包含某个指定的值得节点,谓语卸载[ ]中

通配符: *

管道符 :|

一些例子:
"//input[@*='fuck']"));//匹配所有input元素中含有属性的值为fuck的元素
"//input[start-with(@id,'fuck')]"));//匹配id以fuck开头的元素,id='fuckyou'
"//input[ends-with(@id,'fuck')]"));//匹配id以fuck结尾的元素,id='youfuck'
"//input[contains(@id,'fuck')]"));//匹配id中含有fuck的元素,id='youfuckyou'
//a[text()='百度搜索'] 准确定位
//a[contains(text(),"搜索")] 模糊定位

原文地址:https://www.cnblogs.com/WHWWHW/p/12320806.html