fw安装中遇到的艰难
1.py版本目前一定要是2.7的
2.安装wxpython时不知道用哪个版本时,先安装robotframework-ride;
装好后,输入命令:ride.py,会提示你需要装哪个版本,并且在哪里可以下载(并且下载的地方应该有可以复制的快捷键,直接通过命令行安装)
3.安装后发现桌面未生成图标,可去目录C:\Python27\Scripts下找到ride.py,右击桌面快捷键,桌面就有了
4.桌面的ride.py图标没有照片,可以右击-属性-更改图标-%SystemDrive%\Python27\Lib\site-packages\robotide\widgets\robot.ico(就是这个位置了)
rfw使用中遇到的艰难
0.想要setting-library,必须是在套件的setting才有,用例的setting是没有的
1.添加selenium2library时显示红色,
先检查是否有安装,通过DOS命令行输入:pip list
若未安装,则输入:pip install robotframework-selenium2library
2.关键字太长忘记了,快捷键:ctrl+ait+space
3.测试网页时打开谷歌浏览器时会报错,需要先下载一个chrome driver32,放在py27的目录下就ok了(已把chrome driver放在云盘了)
4.要定位网页中某个元素的xpath时,右击“检查”,在所定位的代码那行再右击“copy”-“copy xpath”
5.添加自定义函数,应该选择套件下的library,路径为C:/Python27/Lib/site-packages下
6.如果要打开什么xls文件,记得后缀名需要是xls而非xlsx
7.当用数组去跑登录用例时,在xls里的数据被识别为浮点数类型的,解决方法有几种,我先试了下面的第二种,不行;再试第一种就行了
8.保存的时候要选择save all,否则总是今天看的和昨天的不一样
9.纠结要不要注释,就怕自己以后看不懂自己写的是什么,哈哈
10.遇到报错UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-13:
解决办法:找到python的安装目录,比如 C:\Python27 里面有个Lib目录
新建一个文件 sitecustomize.py,在里面输入三行:
import sys
reload(sys)
sys.setdefaultencoding('gbk')
11.怎么新建一个py文件呢?
点击桌面左下角按钮,选择文件“IDLE(Python GUI)”,在弹出的框的左上角选择File-New file,在新的框中输入信息再ctrl+s,弹出保存的框,保存默认的格式就是py格式
12.解决完第十个问题后,遇到报错UnicodeDecodeError: 'utf8' codec can't decode byte 0xb9 in position 7: invalid start byte(目前不知道怎么解决)
13.在做到添加设备型号页-上传本地图片时,需要借助AutoitLibrary解决,但是不能直接通过命令行来安装,需要去官网下载3个东西(已保存至云盘):
分别是:pywin32,下载时需注意匹配python的版本
AutoItX3
AutoitLibrary版本是1.1
Q:装完后,即使pip list中有显示AutoitLibrary,但是在robot里加入这个时,显示为红色,解决方法:
A:在安装AutoItX3时,有个选择版本的时候,我选择了x86所以红了,后来重装,选了64,就不红了(robot可能有点慢,有时候需要等待一下变黑)
Q:可以用的时候,运行报错:
[ ERROR ] Error in file 'D:\RF\First\Pages\Equipment_model.html': Initializing test library 'AutoItLibrary' with no arguments failed: IOError: [Errno 13] Permission denied: 'C:\\Python27\\lib\\site-packages\\win32com\\gen_py\\dicts.dat'
Traceback (most recent call last):。。。。。(还有很长,就不贴了)
A:先打开管理员运行的dos命令窗口,再运行ride.py,打开了它的界面,然后。。运行case,就没有这个问题了
(困扰我好久,主要原因是:我没有直接找翻译那个问题,看到权限的问题;)
Q:运行后又没有成功(这里主要是测上传的问题)
com_error: (-2147352561, '\xb7\xc7\xd1\xa1\xd4\xf1\xd0\xd4\xb5\xc4\xb2\xce\xca\xfd\xa1\xa3', None, None)
A:是我关键字用错了,后来参考了一条漏网之鱼的答案,改了就好了(我反省了:要自己多看看关键字,选择性的使用,不能完全相信网友的,主要 因为别人没有截图一起说明,不一定是同一个例子,哎哟喂)
14.纠结了2天的问题,编辑设备型号页-获取了编辑图标的xpath,用关键字click element,但是一直就是报错:说是找不到这个element。(这个xpath如下://*[@id="example"]/tbody/tr[1]/td[9]/a[1])错就错在这个id=example上——下回看到id=example的一定要注意!!
(第二天,最后还是用坐标的方式写了,是用AutoIt中的mouseclick关键字——当然会有写弊端,比如说需要固定这个窗口的大小,还有需要禁止用户使用鼠标,因为我是用在定位设备型号的编辑按钮上的,我发现,如果一个设备型号的其他内内容增加的话,比如说是专家的数量增加的话,也会影响到坐标定位到编辑按钮的准确性,所以应该固定一个设备型号显示的宽度,呵呵)
16.有时运行时会报错,如下:
WebDriverException: Message: unknown error: Chrome failed to start: exited normally (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.16299 x86_64)
解决方式:重新用管理员运行ride.py,再运行就好了
17.设备型号页中有很多超链接要跳转,比如:
那么跳转到的相应的页面,也应该显示相应的数据数量才对,这里先是用f5查询了rf中的count,最后实验出来的方法是:
用关键字Get Matching Xpath Count,用的xpath是绝对路径。
(之后又发现了一个关键字是一样的用法:get element count)
18.选择下拉菜单中的数据,分情况而定的,比如,我在添加设备型号页选择品牌下拉栏时,我用的关键字是Select From List By Index(主要是这个list的路径是识别的,然后代码中是option,如下:
第二种情况是:编辑设备时,也有个选择区域的,但是它的代码如下:
这时候,它的list的xpath是不能识别的,最后我还是用的click element,先点击它的下拉键,再点击下拉面板中的区域,也能成功
19.昨天其实有放弃操作内容-查看详情,因为实在进行不下去(今天终于看到问题在哪了,因为click element下没有给一个sleep,所以,,,——这个问题一定要注意啊)
20.刷新页面用的send关键字,后面写{BROWSER_REFRESH}
21.操作内容中的步骤是需要用鼠标拖动的,用Mouse Click Drag关键字,如下:
22.之前都用page should contain elemnet后面加xpath和文字,比如是验证一个步骤名称,但今天发现这是错误的,因为这个关键字只是验证这个xpath是否存在这个页面,并不会验证后面的名称;换了一个关键字用element should be就对了(主要发现这个问题是在于看log就可以发现)
——这个问题的后续是:验证操作内容中的步骤名称,我可以用element should be;但是在计量器列表的添加页,去验证如下数据时就不行:
用另外一个就好了,如下:textfield value should be
当时的思路就是text有关的,直接在robot中f5去搜text,然后可能觉得这个还行,
(究其原因,为何看似都是文本框,却用的关键字不一致呢,个人认为是和他们的xpath是有关系的,操作内容中"查看详情"中的步骤名称的xpath如下:
和上图中计量器添加页中的是不一样的。)
23.在计量器的编辑页,思路是先测试应该显示哪些内容:
页面如下:
关键字如下:
由于“正常”这个是一个下拉菜单,所以不识别“textfield value should be”,然后在f5中搜了“select”,觉得这个还行
24.又发现了一个新的,就是当你进入如下页面:
需要测试它的显示是复选框被选择状态时,关键字使用:Checkbox Should Be Selected
25.
红色框是错误信息,橙色是它提示可以修改后的信息,结果就是在名称中间加个“_”就好了。
26.关键字Radio Button Should Not Be Selected的使用,它的意思是,没有按钮被选中的情况下,格式是后面加个group name,如下:
27.今天遇到的困难是“产品设置页”上发生的,添加品牌以及产品后需要在数据库删除,遇到的困难是,这是两张表,如下:
第二张的brand_id是第一张表里的,所以两张都要删
方法如下:
先删那个次要的,因为如果先删主要的,那就找不到这个id了,虽然我还没试过,但是应该有先后次序的吧,好吧,那重要的是红框里的为什么不直接写${a},因为${a}得到的结果是[(22,)],我引用的地方是识别不出这个框的,我只需要里面的内容,所以要一层一层的扒开它,由于它有两层框,所以写两个[][],最后写法就是${a[][]}
28.遇到一个问题,add的一个用例刚开始引用dispay的用例,但是报错:no browser is open。找到原因是在display的用例中用了cleanup——也就是关闭浏览器的功能,那么当然找不到已打开的浏览器了。
29.
确认显示的是空值时,该怎么在robot中写?如下: