robotframework使用笔记--持续更新
1.在RF中ELSE 和ELSE IF必须要大写,小写识别不了
2.在用autoitlibrary的过程中,必须需要等窗口先出现,才能进行后续的操作,否则将无法执行选择文件的操作,等待窗口出现的情况,可用如下方法:
等待窗口出现的时间,也可以用sleep,如下:
以上三种方法均可执行成功,需要注意的是,用sleep时,必须要等待的时间足够长才可,推荐用前面两种方法。
PS:这些方法并不是必须的,有时候即使不用这些方法,也可以成功执行上传文件的操作,但最好使用其中一种方法,以防出现,在检测到窗口之前就去执行上传语音文件的操作。
3.当ride窗口没有日志输出时,执行taskkill /f /im chromedriver.exe
4.如果定位xpath时,遇到了瓶颈,不妨搜索一下 xpath轴的用法,会发现新世界的大门
附个例子://a[text()='shangxian2']/following::td[@data-title="'操作'"]/a[@ng-click="editApp(app)"]
5.运行以前跑通的用例,发现无法正常执行,提示找不到disconnected: unable to connect to renderer,这是因为电脑的谷歌浏览器版本和浏览器驱动版本对不上导致的,解决这个问题,只需要确定谷歌浏览器的版本(报错的时候有提示当前版本和需要的驱动版本),然后更新对应的浏览器驱动即可
浏览器和驱动版本对应图:
驱动下载地址(所有chromedriver均可在下面链接中下载到):
6.一个新坑!!!
在用AutoItLibrary库上传文件的时候,如果使用control send关键字,总是不能找到正确的路径!例如!!!在页面中需要上传图片时:
必须要上一次上传的路径和脚本里面的路径保持一致!才能上传成功,如果上一次上传的路径和脚本的路径不一样,使用control send 会导致路径填写的不正确,
如下图(以下只是其中一种情况,还有可能是别的,总之就是不能正确找到图片!):
经查询得知,是因为ControlSend是在光标所在位置后添加(若控件当前未获取焦点则默认是在当前文本后附加),所以如果点击浏览按钮弹出的路径选择框,已经有上次上传的目录了,则会直接在当前目录的路径后添加目录,而且还受输入法的影响(send就跟手动输入类似,跟输入法有关联,如果你开着中文输入法,\ 就会变为 、)
将ControlSend改成ControlSetText可以完美解决这个问题!!!如下:
ControlSetText与ControlSend的区别在于:ControlSetText 会清除原有内容,而ControlSend是在光标所在位置后添加
2018/4/2日编辑:
使用AutoitLibrary库上传文件时,使用上述方法,经常会导致上传的路径和传入的不符(不完整,只取到一部分),原因未知,猜测可能是窗口还没激活就开始写目录,但没激活写不进去,等激活了目录没写完,于是截取剩下未写完的一部分。。。使用下述方法基本上不会出现: