RobotFramework学习笔记-Web自动化

1、窗口关键字使用python

一、当前浏览器弹出新的窗口jquery

  使用Select Window和Close Window处理弹出窗口。实际使用中Select Window不必定会一次选中,一般会结合Wait Until Keyword Succeeds一块儿使用。关闭主窗口时要先选择Select Window Main才能够进行操做。chrome

注:在Select Window时,会遇到模态窗口,这种窗口不必定能直接选择到,能够经过handle操做窗口的关键字,select window by handle(经过handle选择window);get window handles(获取当前线程全部窗口的handles,返回List);get current window handle(获取当前窗口的handle)windows

二、从新打开一个新的浏览器浏览器

  Open Browser打开2个浏览器,用Switch Browser来进行切换,参数是打开浏览器indes顺序或alias别名,关闭全部浏览器用Close All Browsers。app

三、Frame异步

select frame 和 unselect frame,若遇到元素在页面中但找不到,就要看看是否是在frame或iframe里,先select frame选择操做,再回到frame外操做费其余元素,就要unselect frame出去。(注:进去的时候要一层层的进入,出来的时候直接就出来了,若要再对第二层或第一层进行操做就要从新进入async

2、Element函数

一、press key模拟键盘操做,“press key\\13”模拟回车。测试

二、Assign id to element 若一个对象没有id,能够给它指定一个id

三、AutoItLibrary鼠标操做mouse down,mouse up,mouse over,mouse out

四、Get horizontal position、get vertical position用来获取当前对象的左上角顶点距离整个页面的横坐标和纵坐标。

五、获取页面元素,get value、get text,若要获取元素的其余属性值则用get element attribute关键字,如class值,get element attribute element_id@class来获取

3、formelement

checkbox(select checkbox和unselect checkbox复选框的勾选),radio buttons(select radio button关键字),text fields(choose file(用于上传文件的时候选择文件)、input text、input password(日志上不会把密码打印出来)),button.form直接有关的关键字就一个submit form用于提交表单的

4、SelectElement

列表框:单选、多选,选择列表框中的某一项,须要使用select from list,select from list by index、select from list by value、select from list by label。多选框所有选择能够用select all from list。若想知道列表框里都有什么列表项,能够用get list items来获取全部列表项。

5、tableElement

get table cell,click element at table cell、click link at table cell用于点击表格指定单元格里的元素和连接。get index in table column和get index in table row用来获取某个文本在表格的哪一行哪一列。

6、JavaScript

execute JavaScript和execute async JavaScript(异步执行,在函数最后加上回调来返回结果,若超时时间内没有执行完成则会失败)用于执行JavaScript脚本。

confirm action自动进行对话框的确认,若要点击取消,则先用choose cancel on next confirmation进行设置,再用confirm action。恢复点赞成,一样先要choose ok on next confirmation。

7、screenshot

只有一个关键字capture page screenshot,对当前页面进行截图(截图是基于当前浏览器的页面进行的,若此时页面被关闭了,就没法使用了,可用RF自带的截图库里的方法进行截图)。

8、waiting

wait for condition、wait until page contains、wait until page contains element,通常用BuiltIn里的关键字Wait Until Keyword Succeeds较多。

其余:

处理上传文件,点击浏览按钮

Choose File   file                  ${CURDIR}${/}text.tar

${file}             Get Value       file

 

*自定义方法放在D:\Python27\Lib\site-packages下,而后在Test Suite处导入便可使用。

*运行时报错:unexpected error: C:\Users\nick\AppData\Local\Programs\Python\Python36-32\python.exe: Error while finding module specification for 'robot.run' (ModuleNotFoundError: No module named 'robot'),去Python安装目录Python27\Scripts下将 pybot.bat中 python -m robot.run %*  改为   python2 -m robot.run %* 可经过,由于同时安装了Python2和Python3

*添加桌面快捷方式

右键pythonw.exe建立快捷方式,选择【属性】,在目标中输入:
       C:\Python27\pythonw.exe --- 修改为本身的安装目录便可。
 
* 解决RIDE屡次运行以后 不显示日志log的方法
问题
在使用RIDE进行UI自动化测试时,会发现常常运行第二遍不显示下方log
缘由
代码使用的是谷歌浏览器、IE浏览器测试,运行一次后chromedriver.exe,IEDriverServer.exe进程仍在运行中。
解决步骤:
直接使用python脚本kill
一、建立killie.py文件,写入代码,保存到python的安装路径下:C:\Python27\Lib\site-packages
import os
 
def close_process(self, process_name):
"""Close a process by processname."""
if process_name[-4:].lower() != ".exe":
process_name += ".exe"
os.system("taskkill /f /im " + process_name)

二、在RIDE脚本工程中 引用。推荐方式以下:

a、先建立资源文件:new resource , 再在此资源文件上右键,建立用户关键字:new user keyword

 

b、在test suite 中引用,设置执行方式为:每次测试集执行完毕后调用

三、另外的一种更简要写法:

1)RFT引入OperatingSystem类库;

 

2)新建一个关键字,例“CloseDriverserver”

3) 在“CloseDriverserver”输入内容:

${RunOutput}    Run    taskkill /F /IM chromedriver.exe

4)在Case的TearDown中填写“CloseDriverserver”关键字。

 *问题处理:

UnicodeEncodeError中文异常

robotframework中代码执行时报UnicodeEncodeError

解决方案:

在python安装目录下的Lib下建立一个sitecustomize.py,内容以下:

#encoding=utf8
import sys
reload(sys)

sys.setdefaultencoding('utf8')

从新启动python后生效

*jquery定位

 

要是用jquery 关键字定位,前提是 该网站引用了jquery.min.js文件,若是没有执行则报错。

WebDriverException: Message: unknown error: jQuery is not defined

处理方法,直接动态挂马(放在页面加载以后的步骤,须要等5s时间),注意须要联网,由于引用的是外网地址。

关键字: Execute Javascript 

参数:

a = window.document.createElement('script');a.src='https://code.jquery.com/jquery-3.3.1.min.js';window.document.body.appendChild(a);

 *上传文件,经过windows打开本地文件,首先须要安装AutoItLibrary,在此以前确认已安装pywin32,不然先要安装pywin32才能够正常安装,若本机为64位,还须要安装AutoIt(安装时选择...64...)

如下是测试代码:

OpenB          https://www.gaoding.com/clip? sleep 3 Click element     xpath=//*[@id="app"]/div[1]/div[1]/div/div[7]/label   #打开上传界面 ${if_visible_upload}     Run Keyword And Return Status           Element Should Contain       [CLASS:Static; INSTANCE:2]     文件名  #判断是否包含‘文件名’并返回状态Run Keyword If       ${if_visible_upload} =='true'             click button             [CLASS:Button; INSTANCE:1] sleep 1 Control Send     打开                          ${empty}                [CLASS:Edit; INSTANCE:1]     E:\\Photo\\1.jpgControl Click     打开                        ${empty}                [CLASS:Button; INSTANCE:1]      leftclose all browsers

相关文章
相关标签/搜索