您的当前位置:首页正文

RobotFramework学习笔记-Web自动化

2021-09-09 来源:个人技术集锦
RobotFramework学习笔记-Web⾃动化

⼀、窗⼝关键字使⽤1、当前浏览器弹出新的窗⼝

  使⽤Select Window和Close Window处理弹出窗⼝。实际使⽤中Select Window不⼀定会⼀次选中,通常会结合Wait Until KeywordSucceeds⼀起使⽤。关闭主窗⼝时要先选择Select Window Main才可以进⾏操作。

注:在Select Window时,会遇到模态窗⼝,这种窗⼝不⼀定能直接选择到,可以通过handle操作窗⼝的关键字,select window by

handle(通过handle选择window);get window handles(获取当前线程所有窗⼝的handles,返回List);get current window handle(获取当前窗⼝的handle)2、重新打开⼀个新的浏览器

  Open Browser打开2个浏览器,⽤Switch Browser来进⾏切换,参数是打开浏览器indes顺序或alias别名,关闭所有浏览器⽤Close AllBrowsers。3、Frame

select frame 和 unselect frame,若遇到元素在页⾯中但找不到,就要看看是不是在frame或iframe⾥,先select frame选择操作,再回到frame外操作费其他元素,就要unselect frame出去。(注:进去的时候要⼀层层的进⼊,出来的时候直接就出来了,若要再对第⼆层或第⼀层进⾏操作就要重新进⼊)⼆、Element

1、press key模拟键盘操作,“press key\\\\13”模拟回车。

2、Assign id to element 若⼀个对象没有id,可以给它指定⼀个id

3、AutoItLibrary⿏标操作mouse down,mouse up,mouse over,mouse out

4、Get horizontal position、get vertical position⽤来获取当前对象的左上⾓顶点距离整个页⾯的横坐标和纵坐标。

5、获取页⾯元素,get value、get text,若要获取元素的其他属性值则⽤get element attribute关键字,如class值,get element attributeelement_id@class来获取三、formelement

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

列表框:单选、多选,选择列表框中的某⼀项,需要使⽤select from list,select from list by index、select from list by value、select from listby label。多选框全部选择可以⽤select all from list。若想知道列表框⾥都有什么列表项,可以⽤get list items来获取所有列表项。五、tableElement

get table cell,click element at table cell、click link at table cell⽤于点击表格指定单元格⾥的元素和链接。get index in table column和getindex in table row⽤来获取某个⽂本在表格的哪⼀⾏哪⼀列。六、JavaScript

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

confirm action⾃动进⾏对话框的确认,若要点击取消,则先⽤choose cancel on next confirmation进⾏设置,再⽤confirm action。恢复点同意,同样先要choose ok on next confirmation。七、screenshot

只有⼀个关键字capture page screenshot,对当前页⾯进⾏截图(截图是基于当前浏览器的页⾯进⾏的,若此时页⾯被关闭了,就⽆法使⽤了,可⽤RF⾃带的截图库⾥的⽅法进⾏截图)。⼋、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

1、创建killie.py⽂件,写⼊代码,保存到python的安装路径下:C:\\Python27\\Lib\\site-packagesimport 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)2、在RIDE脚本⼯程中 引⽤。推荐⽅式如下:

a、先创建资源⽂件:new resource , 再在此资源⽂件上右键,创建⽤户关键字:new user keyword

b、在test suite 中引⽤,设置执⾏⽅式为:每次测试集执⾏完毕后调⽤

3、另外的⼀种更简要写法:1)RFT引⼊OperatingSystem类库;

2)新建⼀个关键字,例“CloseDriverserver”3) 在“CloseDriverserver”输⼊内容:

${RunOutput} Run taskkill /F /IM chromedriver.exe4)在Case的TearDown中填写“CloseDriverserver”关键字。 *问题处理:

UnicodeEncodeError中⽂异常

robotframework中代码执⾏时报UnicodeEncodeError解决⽅案:

在python安装⽬录下的Lib下创建⼀个sitecustomize.py,内容如下:#encoding=utf8

import sysreload(sys)

sys.setdefaultencoding('utf8')重新启动python后⽣效*jquery定位

要是⽤jquery 关键字定位,前提是 该⽹站引⽤了jquery.min.js⽂件,如果没有执⾏则报错。WebDriverException: Message: unknown error: jQuery is not defined

处理⽅法,直接动态挂马(放在页⾯加载之后的步骤,需要等5s时间),注意需要联⽹,因为引⽤的是外⽹地址。关键字: Execute Javascript 参数:

*上传⽂件,通过windows打开本地⽂件,⾸先需要安装AutoItLibrary,在此之前确认已安装pywin32,否则先要安装pywin32才可以正常安装,若本机为64位,还需要安装AutoIt(安装时选择...64...)以下是测试代码:

因篇幅问题不能全部显示,请点此查看更多更全内容

Top