RFS自动化测试工具安装与使用总结

一,调试
1,在调试时,总时提示“无法打开浏览器”
解决办法:
1,把浏览器的代理关闭
2,把浏览器的显示比例调到100%
3,在IE设置的安全选项中,把四个模块的启用保护模式的勾,去掉
4,去除进入系统弹出的登录提示
   在浏览器中---工具---internet选项---安全---把只在intranet自动登录,改为匿名登录

二,安装加载库
1,RequestsLibrary
先安装Requests工具,再安装RequestsLibrary
再在robot中进行加载lib,如果加载的库还是红色的,重启就可以了

三,常用关键字
open browser    打开浏览器
input text    在文本框中录入内容
input password    在文本框中录入密码
click button    点击按钮
page should  (NOT)contain (link,button,element,checkbox,list)   页面是否出现指定的内容
close browser    关闭浏览器
多个打开浏览器切换
open browser    http://127.0.0.1:8000/    ie    local    
switch browser    local        

针对页面弹出窗口的确认键
confirm action----类似于点击弹出窗的确认或OK键

alert should be present  当前弹窗的内容   -----判断当前指定内容的弹窗是否存在

get alert message---获取弹出窗的信息

${msg}=     get alert message

should be equal as string  ${msg}   *****

在弹窗中选择取消操作

a,choose cancle on next confirmaction

b,confirm action


设置日志级别
Set Log Level    TRACE

下拉列表
select from list xpath value
select from list by value    xpath value
select from list by index    xpath value

框架
select frame    id=fra
unselect frame

复选框
select checkbox    id=CheckYes
unselect checkbox    id=CheckNo

checkbox should not be selected
select checkbox
checkbox should be selected

单选框
select radio button    radio1---单选框名称    A--value)

click element    id=registerGenderMale

Oracle数据库
connect to database using custom params(关键字)    cx_Oracle    用户名,密码,SID
${row}    row count    select * from 表1;

等待页面加载
wait until page contains element
sleep
reload page---刷新

注释
Comment

几个关键字的区别
Wait Until Keyword Succeeds
wait until page contains element
SLEEP
element should contain
page should contain element
page should contain
Element Should Not Be Visible

判断的使用

判断条件---数字对比
Run Keyword If    ${res} == 0    执行的关键字
... ELSE 执行的关键字2

判断条件---字符对比
Run Keyword If    ‘${res}’ == ‘ttttt'    执行的关键字
判断条件---布尔类型对比
Run Keyword If    '${res}' == '${true}'    执行的关键字

HTTP接口
create session    httpserver    http://localhost:8000
${addr}    Get request    httpserver    users/s
should be equal as strings    ${addr.status_code}    200
log    ${addr.content}    
${resp}    tojson    ${addr.content}

四,元素定位

1,定位a开头的且文本为注册的元素

//a[contains(text(), '注册')]

2,通过元素本身的id来定位

id='username'

3,通过元素本身的id来定位

name='name'

4,根据当前元素的上级或者上上级元素来查找定位指定的元素

//form[@class='el-form']/div[3]/span/a[2]

5,
五,常见问题解答
1,定位不到元素
Element locator '//input[@id="registerName"]' did not match any elements.
前端代码
<td>
<div class="c">
<span id="disp_registerName" class="cp edit_hide" style="display: none;"></span>
<input id="registerName" class="pa_ui_text edit_show pa_ui_element_normal" type="text" otitle="车主姓名" value="" name="register.name" style="display: inline;">
</div>
</td>
解决方法:
先从最里面的元素开始一级一级往上找,找到iframe,然后先select frame这个ID就可以定位到里面的元素了。

2,InvalidElementStateException: Message: u'Element must not be hidden, disabled or read-only'
针对根据复选框的状态,解决文本框中默认带出内容时。如果这样写就会报错
select checkbox    id=noLicenseFlag
input text    id=registerName    湘A*
像这样的组合,后面那句input text    id=registerName    湘A*直接删除就可以了。

3,页面操作按钮提示找不到elements
click button id=carInfoSubmitBtn
改为click element id=carInfoSubmitBtn

4,根据录入框内容弹出框框,定位不到元素
采用相对路径的方式定位,用firefox浏览器打开地址,按F12获取元素位置,右击---选择复制XPATH
放在脚本中形式为:xpath=/html/body/div[9]/div[2]/table/tbody/tr[4]/td[4]

6,InvalidElementStateException: Message: u'Element must not be hidden, disabled or read-only'
出现这个现象是因为脚本执行快,而页面的元素还没有加载完成造成的。
等待页面加载
wait until page contains element或sleep

7,页面执行时没有报错,但一直停在那里了
利用Mouse out 关键字,移开鼠标动作。

8,使用close broswer关闭浏览器不起作用
首先安装pywin32-217.win32-py2.7.exe,再安装AutoItLibrary库,在close broswer关键字
下一行,增加删除进线的关键字: process close iexplore.exe

10,查看所有有关robot相关库的版本
pip list

11,通过pip升级库或程序版本
1,python -m pip install --upgrade pip
报错:
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
2,根据提示,执行命令
python -m pip install --upgrade pip
报错:Requirement already up-to-date: pip in c:\python27\lib\site-packages
3,找到c:\python27\lib\site-packages下这个目录pip-8.1.1.dist-info并删除,重新执行
python -m pip install --upgrade pip
4,查看是否更新成功
pip list后显示最新版本

12,利用pip更新库或RIDE或robot
pip install robotframework-ride --upgrade
再用pip list可以看到升级成功的版本号了

13,Run Keyword And return status关键字识别不了
利用pip更新RIDE,robot,selenium2Library

14,ImportError:No module named cx_Oracle
根据连接oracle客户端的版本如:11G,操作系统是32位还是64位
安装对应的cx_Oracle安装包,如:cx_Oracle-5.1.2-11g.win32-py2.7

15,Unable to acquire Oracle environment handle
在oracle客户端的目录中把oci.dll,oraocci11.dll,oraociei11.dll文件复制到C:\Python27\Lib\site-packages目录中

16,日志目录
Log:     d:\users\liujun~1\appdata\local\temp\RIDEwzyfth.d\log.html
Report:  d:\users\liujun~1\appdata\local\temp\RIDEwzyfth.d\report.html

17,在IE中如果click不起作用,用如下关键字
press key id=kw    \\13

18,单选框实例
<p class="checkBox">
<input id="registerGenderMale" class="pa_ui_element_normal" type="radio" value="M" name="register.gender" otitle="车主-性别男">
<label class="radiotxt" hidefocus="hidefoces" for="registerGenderMale">男</label>
<input id="registerGenderFemale" class="pa_ui_element_normal" type="radio" value="F" name="register.gender" otitle="车主-性别女">
<label class="radiotxt" hidefocus="hidefoces" for="registerGenderFemale">女</label>
</p>
select radio button    register.gender    M

19,下拉列表实例
<div class="pa_ui_dropselect_inner paui-clearfix">
<span class="pa_ui_dropselect_input_Container" style="width: 71px;">
<input class="pa_ui_dropselect_input" type="text" readonly="readonly" otitle="V3版-送单地址-县级市" style="width: 71px; opacity: 1;">
</span>
<span class="pa_ui_dropselect_button" otitle="V3版-送单地址-县级市">
</div>
select from list class="pa_ui_dropselect_inner paui-clearfix" 江北区

 

20,通过PIP安装Selenium2Library报错
C:\Users\Administrator>pip install Selenium2Library
Collecting Selenium2Library
  Could not find a version that satisfies the requir
 versions: )
No matching distribution found for Selenium2Library

解决办法:
pip install robotframework-Selenium2Library
就可以了

21,安装IEDriver报错
WebDriverException: Message: 'IEDriverServer.exe' executable needs to be in PATH. Please download fromhttp://selenium-release.storage.googleapis.com/index.html and read up at https://github.com/SeleniumHQ/selenium/wiki/InternetExplorerDriver
解决办法:
下载对应系统版本的IEDriverServer.exe放在IE的安装目录下和Python的根目录下,并设置PATH。

22,滚动鼠标拖动滚动条到最顶部或最底部
execute javascript id.scrollTop其中id为滚动条区域对应的id,用法:
如:execute javascript J_introCon.scrollTop=0是拖到最顶部,execute javascript J_introCon.scrollTop=100000是拖到最底部

 

23,在CASE中的setup中可以设置运行CASE前,运行SETUP里面的关键字。teardown中可以设置运行CASE后,指定要运行的关键字

 

24,满足条件结束脚本
exit for loop
如:如果count值为0,则结束CASE
run keyword if ${count}==0 exit for loop

 

25,执行SQL时报错:DatabaseError:ORA-00911:Invalid character
去掉SQL后面的 ; 

 

26,执行SQL查询
Execute sql String  select * from 表名

27,在执行完用例后在界面的下方看不到日志

结束IEDriver.exe或ChromeDriver.exe进程,重新执行就可以看到了

更新-----20190528-----------

1,不要使用IE浏览器
因为在自动化用例时,特别是在输入框中输入内容时,会导致输入的指定值丢失,如:脚本中指定输入“自动化测试有限公司”,在IE中执
行就变成了“自动测试有限公”。所有建议使用Chrome。
2,在使用chrome时,注意chrome浏览器与ChromeDriver.exe的版本对应关系
如果浏览器与驱动不对应,就打不开浏览器,会报错。这个可能根据错误提示看出来
3,不同浏览器驱动安放位置
一般都是放在Python27目录中,如:C:\Python27。然后把这个路经加到环境变量的PATH中。如:变量名:PATH,,变量值:C:
\Python27;C:\Python27\Scripts;
4,定位元素无法操作,报错:    Element with locator '//div[@id='app']/div[2]/div/ul/li[1]/ul/li[1]' not found.
分析;
Wait Until Page Contains    欢迎您    5
click element    //div[@id='app']/div[2]/div/ul/li[1]/ul/li[1]
第一行执行成功,第二行执行报错。根据错误提示分析,找不到这个元素。如果是找不到元素,要么页面没有加载完成,要么前面一步
未执行完。
解决办法:
把Wait Until Page Contains 替换成 page should contain就可以了完美解决,并且再执行时没有报错。
5,两个顶级元素各参数都相同时,如何定位到其中一个元素
遇到这个情况,只有使用XPATH的绝对路径来定位了。使用last()函数或[1]来定位也无法解决此问题。
6,文件上传,要用到AutoItLibrary库,所以先要确认己成功安装这个库。上传示例如下:
6.1,点击上传文件按钮
click element    xpath://table[@class='table-list upload-box nohove mt30']/tbody/tr[2]/td[3]/button            
sleep    2
6.2,等待上传文件对话框            
win wait    打开        
6.3,激活上传文件对话框,便于操作    
win activate    打开    
6.4,输入上传的文件名        
control set text    空格    空格    Edit1    F:\\测试\\自动化测试\\图片\\downloadYBFJDL62.jpg
sleep    2
6.5,点击打开按钮            
control click    空格    空格    Button1    
sleep    10            
6.6,上传文件中的判断
Wait Until Page Does Not Contain    加载中    timeout=20    error=None    
7,安装AutoItLibrary库
7.1,先安装pywin32-221.win-amd64-py2.7.exe
7.2,再安装AutoItLibrary-1.1_x64

8,运行指定的用例
无论有没有勾选测试用例,在点start后,都会执行所有的用例。有两种解决方式
8.1,在Run界面中的Arguments行中,输入命令:-t 用例名称,如;-t 登录。但是这种方式好像也不起作用。
8.2,在测试用例Edit界面中,点击Settings,然后在Tags中输入标签,如:test1。这时回到测试套件的Run标签页中,勾选Only
run tests with these tags,然后,在下面的输入行中输入在Tags中输入标签,如:test1。再点击Start就可以了。
9,robotframework连接mysql数据库
9.1,安装databaselibrary,通过cmd命令执行:pip install robotframework-databaselibrary
9.2,cmd命令执行:pip install pymysql
10,连接MySql数据库,并执行SQL
10.1,连接数据库
Connect to database using custom params    pymysql    连接串连接串:
host='mysql.test.syf.com',port=3306,user='sy',passwd='rhYrE3r4wmb9',db='shengye_elebill'
10.1,执行查询SQL
变量    Query    查询SQL语句
10.2,增删改SQL
Execute Sql String    增删改SQL语句
变量    
10.3,断开数据库
Disconnect From Database
10.4,在执行的SQL中有些值用变量代替,增加灵活活
先在Arguments中声明定义,然后在SQL中,有些地方值用变量代替,如;select * from tableA where tableA.id='${id}'
然后,在用例中先定义${id} set variable 1001,再在调用关键字的地方加上${id}
11,定义变量
11.1,定义变量并赋值:${company}    set variable    深圳某某有限公司
11.2,定义变量并赋值或把执行表达式的值赋给指定变量${company}    evaluate    表达式

11.3,也可以直接定义一个套件的变量,直接右击测试套件--New Scalar,并赋值,后面的用例可以直接${变量}方式引用

12,获取页面元素的值,并存入变量,如下图获取红线框中的内容并保存到变量,前端代码如下

${codeNum}    get text    //p[@class='pull-left']/span[6]
log    ${codeNum}    

13,把页面提取的内容存入变量,供后续的用例或用键字调用

${codeNumTemp}    get text    //p[@class='pull-left']/span[6]       
Set Global Variable    ${codeNum}    ${codeNumTemp}    #把临时变量赋给全局变量 

14,获取当前日期,以及对日期进行加减的处理,需安装datetime库

pip install datetime

安装成功后,在robotFrameWork中测试套件添加库时,注意大小写:DateTime

15,获取当前日期,当前日期往前或往后的日期

15.1,当前日期,${currentDate_Temp}    Get Current Date    UTC

15.2,当前日期往前 ${currentDate_Temp}    Get Current Date    UTC    20 days

15.3,当前日期往后 ${currentDate_Temp}    Get Current Date    UTC    -20 days

15.4,截取指定格式的日期 ${currentDate}    get subString    ${currentDate_Temp}    0    10

结果就是:2019-07-05,依此类推。   

16,在当前页面中拖动滚动条到最底部

Execute Javascript     window.scrollTo(0, document.body.scrollHeight)

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值