Action Path
针对robotFramework的操作集,坑与经典操作方式。
OperatingSystem
系统操作library(自带)。其拥有系统文件、系统操作等API,如Remove Files、Get File Size、Join Path、Create Directory等;可以很方便的进行系统类操作。
DatabaseLibrary
数据库操作library。可以操作Mysql、Oracle等数据库。
安装:pip install robotframework-databaselibrary
针对不同的数据库需要安装对应的数据库支持
Oracle配置:oci.dll、oraocci11.dll、oraociei11.dll放入%path%\Lib\site-packages
#Oracle | ||
---|---|---|
Connect To Database Using Custom Params | cx_Oracle | 'username','password','ip:port/sid' |
#Mysql | ||
Connect To Database Using Custom Params | pymysql | database='my_db_test', user='postgres', password='s3cr3t', host='tiger.foobar.com', port=5432 |
查:query
增删改:Execute Sql String
Database
robotframework有很多变量类型,Scalar、List、Dict,数据存放的地方也多样,如testCase中定义、suite中定义,但在取放、维护、查看上不是很方便。
使用py文件存放测试数据是一个新方法,可以在工程目录下建立一个data.py文件,通过python的数据存放形式,并通过${dev_data.get('username')} 提取Dict变量,${data}提取Scalar变量,${b[1]}提取List变量。
Run Keyword If
执行分支。进行布尔判断时,需要形式如下'${mode}'=='${true}'。
多重判断用 and 连接,空格。
使用BDD模式关键字
robotframework支持使用形如BDD的关键字,如:点击${text}.
该类关键字不支持增加传入Arguments,否则会找不到keyword。
浏览器teb切换
Selenium支持浏览器来回切换,在自动化测试中,如果是单向切换,可以使用Select Window关键字。
元素定位问题
描述 | Xpath | CSS Path |
---|---|---|
直接子元素 | //div/a | div > a |
子元素或后代元素 | //div//a | div a |
以id定位 | //div[@id=’idValue’]//a | div#idValue a |
以class定位 | //div[@class=’classValue’]//a | div.classValue a |
同级弟弟元素 | //ul/li[@class=’first’]/following-sibling::li | ul>li.first + li |
属性 | //form/input[@name=’username’] | form input[name=’username’] |
多个属性 | //input[@name=’continue’ and @type=‘button’] | input[name=’continue’][type=’button’] |
第4个子元素 | //ul[@id=’list’]/li[4] | ul#list li:nth-child(4) |
第1个子元素 | //ul[@id=’list’]/li[1] | ul#list li:first-child |
最后1个子元素 | //ul[@id=’list’]/li[last()] | ul#list li:last-child |
属性包含某字段 | //div[contains(@title,’Title’)] | div[title*=”Title”] |
属性以某字段开头 | //input[starts-with(@name,’user’)] | input[name^=”user”] |
属性以某字段结尾 | //input[ends-with(@name,’name’)] | input[name$=”name”] |
text中包含某字段 | //div[contains(text(), ‘text’)] | 无法定位 |
元素有某属性 | //div[@title] | div[title] |
父节点 | //div/.. | 无法定位 |
同级哥哥节点 | //li/preceding-sibling::div[1] | 无法定位 |
//td[contains(text(),'${groupCode}')][1]/following-sibling::*/a[text()='查看资源']
形如*/可以定位到同级下的对应元素。