RF遇到的一些常见问题处理记录
1、 常用库
Builtin RF内部库,常用的should xxx wait xxx log xxx run keyword if xxxx等 都在这个库里面
String 字符串处理、文本处理
Conllections 字典、列表处理
Selenium2library web自动化测试基础库
AutoItLibrary 鼠标 键盘操作 C/S控件操作
2、 数据库获取存在乱码怎么处理?数据库取值中文转码
处理前
处理后
方法:conect参数中增加charset='utf8'
3、 浏览器怎么打不开?
检查chromedriver路径是否添加至环境变量
检查open browser 后是否添加了浏览器类型且是否写对
检查日志中是否存在浏览器版本信息,是否需要升级驱动或者浏览器版本降级
4、 导入库是红色的
- 确定是否是pip在线安装,其他下载文件可能因为网络原因没安装到位,那么再安装一次
- Pip list检查是否安装成功,检查存在库,则pip升级一次,之后重启ride
5、 下拉框处理
HTML里面 下拉框开头是<option xxx>
如下结构,可以使用select from list xpath=//
Select from list by value xxx
<html>
<body>
<form>
<select name="cars">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="fiat">Fiat</option>
<option value="audi">Audi</option>
</select>
</form>
</body>
</html>
如果打开是<div xxxx>
就用常规click element xpath 点开下拉按钮
Click element xpath = 选中下拉框中元素
6、 多选按钮
考虑Select checkbox(让你的脚本看起来漂亮点)
或者传统的click element
7、 带img的html
Click image id src alt三个属性
Cilck element xpath=(//img[contains(@src,'data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==')])[X])
或者
Click element css=xxxxx
8、 for循环
场景---数据库取得一组数据,查看数据中是否存在目标值,但不知道具体位置
:For ${vaule} IN RANGE ${result}
Log ${vaule} #查看列表数据清单
一般处理方式是转化成str类型
${result} Evaulate Str(${result})
Should contain ${result} ${vaule} 判断${result}是否包含${vaule}
9、 用例前很多动作重复用到怎么办?
用例面板存在setup/teardown
见例子

用例内容为打印’3’ 但是此前先执行打印’1’ ‘2’ 打印完’3’ 结尾再打印’4’ ‘5’
同时注意图中格式,可以存放多个关键字 但是关键字之动作之间需要加上大写’AND’ 并使用’|’隔开
10、 IF语句
单一条件
Run keyword if ${x} <= 3 log ‘right’ ElSE log ‘erro’
多个条件
Run keyword if ‘${x}’ == 1 or ‘${y}’ == 2 or ‘${z}’ == 3 log ‘right’
多重条件
Run keyword if ${x} <= 3 log ‘right’
… Else if ${y} > 4 log ‘erro’
… Else log ‘完了’
另外查看 run keyword if 关键字时还注意到

存在关键字 run keyword unless
刚好和其上介绍的run keyword if相反 用法相同,有兴趣可以试试(* ̄︶ ̄)
11、 写了if语句 怎么让其执行多行关键字
这个看你封装的 run keyword if x=x 语句
语句只能是一个关键字
但是一个关键字可以封装包含多个关键字,根据你的需求来

12、 怎么修改日志路径
在ride运行界面,Arguments输入-l 日志路径 –r 日志路径
-I log的路径参数
-r 报告的路径参数

13、 ride提示元素找不到
遇到这种问题不要着急,慢慢来,从以下几个方面寻找
- 是不是页面切换,页面还没加载出来,代码已经执行了,所以提示找不到元素
这里建议sleep 或者wait命令
- Chrome中copy xpath复制出来的是相对路径,所以id会变,确认取元素页面是否是初次打开的页面
- 页面布局原因存在多个frame,先前定位的元素在另外一个frame如图

首先使用select frame 但是这里存在局限 很多frame不存在id 和 name属性 无法定位,需要修改select_frame方法
def select_frame(self, locator, index):
"""Sets frame identified by `locator` as current frame if 'locator' is not unique, use index
Key attributes for frames are `id` and `name.` See `introduction` for details about locating elements.
"""
if locator.startswith("tag") :
elements = self._element_find(locator, False, True)
element = elements[int(index)]
else:
element = self._element_find(locator, True, True)
self._current_browser().switch_to_frame(element)
修改后使用方法为
select frame tag=iframe 1

另外还有页面模糊匹配的方法,这里用的不熟,后面详解一下。
xpath = //div[text()='web上显示的文本'] 根据文本匹配
还有一文本前后可能有空格,特殊字符,可以用部分文本来匹配
xpath = //div[contains(text(),'部分文本')]
还有父节点取法,xpath回炉重学,最近看一遍xpath觉得变文盲了
如下,列表存在一条杨思剑的信息

HTML如图

如果唯一,用文本定位方式,xpath=//div[text()='杨思剑']
14.判断元素是否置灰
Js里面使一个按钮置灰的方法时disable(),对应html中表现在class属性里有个disable或者其他说明鬼
我们的后台是酱紫的

所以我们只需要获取这个空间的class属性中是否包含这些
相关关键字
get element attribute 获取元素属性
${class_value} Get Element Attribute xpath=//div[@id=’ext-gen2166’]@class
之后判断${class_value} 中是否包含unselectable即可
14、 弹窗处理
Dismiss Alert
Choose ok on next confirmation
Confirm action
如果不行~ 用click element吧~
补充—获取弹窗信息
Get alert message
15、 数据库取值
理解二维概念
数据库第一个值就是0行0列
数据库取值需要处理, ${a[0][0]}
我们的数据库存在特殊形式~如图

导出来是一组字符串,此方法取出来 可以type一下,得到的结果是dic 则按字典来取值
${chargeDWOption} evaluate str(${chargeDWOption[0][0]})
${inThreshold} evaluate ${chargeDWOption}["inThreshold"] #入金手续费起征点
16. 处理页面出现不定提示框的情况方法:
run keyword and return status + wait until page contains element
${status} run keyword and return status wait until page contains element xxx
如果界面出现xxx 则${status}为True 注意大写
此时可以补充一个循环来继续下一步操作
16、 跳转页签使用方法
例如页面存在多个页签
Click element 可以处理
也可以使用focus ****的方法
17、 键盘输入
press key xpath (内容或功能键) (selenium2Library库) 建议使用
send (AutoItlibrary库) 相当强大,但是我们不怎么用
补充 其他输入可以用 input text xpath (内容)
18、 Js脚本执行
Execute javascript document.getElementById("一个属性").value=${属性} #定位
还是需要了解一些js的语法
19、 AutoItlibrary库常用关键字
AutoitLibrary常用关键字
run: 运行可执行程序
wait for active window:等待窗口激活
win wait: 窗口等待
win close:关闭窗口
control get text:获取文本内容
control click:鼠标点击
send:输入内容信息
参数请见RF --->F5
20、 数据库连接
- connect参数一定要全,顺序可以打乱
- 执行时使用query
- 执行完不用,记得关闭连接
- 使用时记得取值的数据库是否正确

浙公网安备 33010602011771号