一、窗口关键字使用

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

  使用Select Window和Close Window处理弹出窗口。实际使用中Select Window不一定会一次选中,通常会结合Wait Until Keyword Succeeds一起使用。关闭主窗口时要先选择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 All Browsers。

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 attribute element_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 list by 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和get index 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-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)

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.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.jpg
Control Click     打开                        ${empty}                [CLASS:Button; INSTANCE:1]      left
close all browsers

RobotFramework学习笔记-Web自动化的更多相关文章

  1. docker+headless+robotframework+jenkins实现web自动化持续集成

    在Docker环境使headless实现web自动化持续集成 一.制作镜像 原则:自动化测试基于基础制作镜像 命令:docker run --privileged --name=$1 --net=ho ...

  2. 《ASP.NET MVC4 WEB编程》学习笔记------Web API 续

    目录 ASP.NET WEB API的出现缘由 ASP.NET WEB API的强大功能 ASP.NET WEB API的出现缘由 随着UI AJAX 请求适量的增加,ASP.NET MVC基于Jso ...

  3. 《ASP.NET MVC4 WEB编程》学习笔记------Web API

    本文截取自情缘 1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集 ...

  4. [学习笔记] Web设计过程中该做和不该做的

    原文网址: http://www.javascriptstyle.com/the-dos-and-donts-of-web-design -该做的: QR代码QR代码即快速响应代码,这是矩阵条形码的一 ...

  5. [html] 学习笔记--Web存储

    HTML5 提供了两种在客户端存储数据的新方法之前,这些都是由 cookie 完成的.但是 cookie 不适合大量数据的存储,因为它们由每个对服务器的请求来传递,这使得 cookie 速度很慢而且效 ...

  6. JavaScript 学习笔记 - Web Workers

    前言 本文仅是 Web Workers 的入门科普文章,不涉及太琐碎的知识点. 我们知道,在 Web Workers 出来之前,JavaScript 是单线程的.即使是 setTimeout 之类的看 ...

  7. ASP.NET MVC Web API 学习笔记---Web API概述及程序示例

    1. Web API简单说明 近来很多大型的平台都公开了Web API.比如百度地图 Web API,做过地图相关的人都熟悉.公开服务这种方式可以使它易于与各种各样的设备和客户端平台集成功能,以及通过 ...

  8. Asp.net core 学习笔记 ( Web Api )

    asp.net core 把之前的 webapi 和 mvc 做了结合. mvc 既是 api. 但是后呢,又发现, api 确实有独到之处,所以又开了一些补助的方法. namespace Proje ...

  9. 好记性不如烂笔头-linux学习笔记2kickstart自动化安装和cacti

    kickstart自动化安装的逻辑梳理 主要是安装tftp nfs dhcp 然后配置kickstart 原来就是先安装tftp 可实现不同机器的文件下载 然后在安装nfs 就是主服务器的文件系统 然 ...

随机推荐

  1. ceres求解BA第10章

    1.前言g2o是根据边来保存每一个代价函数,它是在边类中构造误差函数,构造边的时候,会设置顶点.测量值.协方差矩阵等.而在ceres中,用problem类型来构造最终的目标函数.先是使用AddResi ...

  2. 最近采集写的一个超简单实用的HTML解析类

    1. [文件] HtmlDom.php <?php$oldSetting = libxml_use_internal_errors( true ); libxml_clear_errors(); ...

  3. 详解Java异常Throwable、Error、Exception、RuntimeException的区别

    在Java中,根据错误性质将运行错误分为两类:错误和异常. 在Java程序的执行过程中,如果出现了异常事件,就会生成一个异常对象.生成的异常对象将传递Java运行时系统,这一异常的产生和提交过程称为抛 ...

  4. Trustzone——利用硬件对数据加密,秘钥存在芯片里

    我是看 https://zhuanlan.zhihu.com/p/26441212 这个文章知道trustzone自身会存储秘钥,这个秘钥可以来自用户指纹,也可以来自云端下发的key. Truztzo ...

  5. Facebook的实时流处理技术——Scuba是Facebook的一个非常快速、分布式的内存数据库,用于实时分析和查询

    Scuba,Facebook的一个非常快速.分布式的内存数据库,用于实时分析和查询.是Facebook的回归分析代码.错误报告监控.广告收入监控和性能调试的背后主力. Facebook的实时流处理技术 ...

  6. 集训Day2

    雅礼集训2017Day2 T1 给你一个水箱,水箱里有n-1个挡板,水遵循物理定律 给你m个条件,表示第i个格子上面y+1高度的地方有或没有水 现在给你无限的水从任意地方往下倒,问最多满足多少条件 n ...

  7. MUI框架开发HTML5手机APP

    出处:http://www.cnblogs.com/jerehedu/p/7832808.html  前  言 JRedu 随着HTML5的不断发展,移动开发成为主流趋势!越来越多的公司开始选择使用H ...

  8. Oracle分组后取某列最大值的行数据

    select * from ( select last_comment, row_number() over(partition by employeeid,roadline,stationname ...

  9. [poj1830]开关问题(高斯消元)

    题意:求高斯消元中自由元的个数,输出1<<ans; #include<cstdio> #include<cstdlib> #include<cstring&g ...

  10. [xdoj1227]Godv的数列(crt+lucas)

    解题关键:1001=7*11*13,模数非常小,直接暴力lucas.递归次数几乎为很小的常数.最后用中国剩余定理组合一下即可. 模数很小时,一定记住lucas定理的作用 http://acm.xidi ...