robot framework自动化-------未发现元素重新加载
2017-04-28 20:05
357 查看
以下讲解的是工作中遇到的实例:
近期在用robot framework做自动化的时候,发现有时候虽然点击、或者刷新、或者加载成功了,但未能出现我们需要的元素,下一步就无法继续了
所以在遇到这种问题的时候,我们需要刷新界面、或者重新点击、或者重新......
示例一:
在登录界面,输入用户名密码后,点击登录未能出现跳转至系统首页,而是跳转至报错页面
${url}是登录链接地址,login_keywords是做了登录关键字封装
示例二:
登录成功后呢,进入首页了,有时候连续运行刷新首页后,首页没有打开
这里多出来了个“请申请权限”提示,因为自动化运行时间长了,偶尔会弹出“请申请权限”提示,所以也加了个判断(可能是系统的bug)
示例三:
例如有时候加载页签时也是不能打开页签,或者打开太慢了,也可以判断页面中某个元素如果没有出现的话,则重新点击菜单
界面是这样子的
所以我需要判断界面上的第一个复选框是否存在,如存在则结束FOR,如等待超时则重新点击“全部投放情况查询”菜单
代码贴出来
这里有个iframe,我也做了判断
For里依次是:
第一句:进入frame
第二句:获取界面元素(上图的复选框),并返回状态(True 或 False)
第三句:判断如果复选框不存在,则关掉frame(需要关掉frame,不然下一步可能会找不到frame了)
第四句:判断如果复选框不存在,则点击左侧的二级菜单,重新点击“全部投放管理”
第六句:这里有一个离开页面确认(因为这个界面可以直接在列表编辑,关闭 或者 点击其他菜单都会进行确认是否离开)
第七句:如果发现了元素(复选框),则结束for循环,继续下一步操作
看完是不是觉得其实也挺简单的,其实很多地方也可以这么做,加个方法判断,特别是上一步操作后,下一步的操作在这个界面上,但是界面没有刷新出来,就说这么多吧
近期在用robot framework做自动化的时候,发现有时候虽然点击、或者刷新、或者加载成功了,但未能出现我们需要的元素,下一步就无法继续了
所以在遇到这种问题的时候,我们需要刷新界面、或者重新点击、或者重新......
示例一:
在登录界面,输入用户名密码后,点击登录未能出现跳转至系统首页,而是跳转至报错页面
${url}是登录链接地址,login_keywords是做了登录关键字封装
adm_login [Documentation] 登录 Open_Browser ${url} chrome #如登录失败,则重新打开登录界面 : FOR ${i} IN RANGE 6 \ login_keywords #登录关键字 \ sleep 2 \ ${title_text} get_title #获取itle文本信息 \ Run_keyword_if '${title_text}'=='广告管理系统' Exit_for_loop #结束for \ Run_keyword_if '${title_text}'!='广告管理系统' go_to ${url}
示例二:
登录成功后呢,进入首页了,有时候连续运行刷新首页后,首页没有打开
等待未出现重新打开首页 : FOR ${num} IN RANGE 5 \ Set_Browser_Implicit_Wait 7 #隐式等待 \ ${Not_Contain} Run_keyword_and_return_status Page_Should_Not_Contain_Element Xpath=//b[text()='欢迎登录广告管理系统!'] #判断界面元素是否出现 \ ${No_Permission} Run_keyword_and_return_status Page_Should_Contain_Element Xpath=//div[@class='ext-mb-content']/span #出现提示"请申请权限" \ Run_keyword_if '${No_Permission}'=='True' go_to ${link} #如果刷新出现了提示"请申请权限",则重新打开首页链接 \ Run_keyword_if '${Not_Contain}'=='True' go_to ${link} #如没有包含欢迎语,则重新打开首页链接 \ Run_keyword_if '${Not_Contain}'=='False' Exit_for_loop
这里多出来了个“请申请权限”提示,因为自动化运行时间长了,偶尔会弹出“请申请权限”提示,所以也加了个判断(可能是系统的bug)
示例三:
例如有时候加载页签时也是不能打开页签,或者打开太慢了,也可以判断页面中某个元素如果没有出现的话,则重新点击菜单
界面是这样子的
所以我需要判断界面上的第一个复选框是否存在,如存在则结束FOR,如等待超时则重新点击“全部投放情况查询”菜单
代码贴出来
这里有个iframe,我也做了判断
For里依次是:
第一句:进入frame
第二句:获取界面元素(上图的复选框),并返回状态(True 或 False)
第三句:判断如果复选框不存在,则关掉frame(需要关掉frame,不然下一步可能会找不到frame了)
第四句:判断如果复选框不存在,则点击左侧的二级菜单,重新点击“全部投放管理”
第六句:这里有一个离开页面确认(因为这个界面可以直接在列表编辑,关闭 或者 点击其他菜单都会进行确认是否离开)
第七句:如果发现了元素(复选框),则结束for循环,继续下一步操作
Click_Element Xpath=//b[text()='系统投放管理'] Sleep 1 Click_Element Xpath=//span[text()='全部投放情况查询'] Sleep 1 #如果"全部投放情况查询"页签未能打开,则循环重新点击"全部投放情况查询"菜单 : FOR ${num} IN RANGE 3 \ Select_frame Xpath=//iframe[@src='/syscast/AllCastSearch.jsp?s_m_i=100035467'] \ ${Not_Visible} Run_keyword_and_return_status Wait_Until_Page_Contains_Element Xpath=//div[@class='x-grid3-locked']/div[2]/div/div[1]//td[1]/div/div 10 \ Run_keyword_if '${Not_Visible}'=='False' Unselect_Frame #如果没有发现查询结果页第一个复选框,则关闭iframe \ Run_keyword_if '${Not_Visible}'=='False' Click_Element Xpath=//span[text()='全部投放情况查询'] #如果没有发现查询结果页第一个复选框,则重新点击"全部投放情况查询"菜单 \ Sleep 1 \ Run_keyword_if '${Not_Visible}'=='False' Click_Element Xpath=//button[@class=' x-btn-text' and text()='是'] #重新点击菜单后,需要确认 \ Run_keyword_if '${Not_Visible}'=='True' Exit_For_Loop
看完是不是觉得其实也挺简单的,其实很多地方也可以这么做,加个方法判断,特别是上一步操作后,下一步的操作在这个界面上,但是界面没有刷新出来,就说这么多吧
相关文章推荐
- jquery 新增元素需要重新绑定事件(list 加载 进行重新绑定)
- js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
- js事后重新加载元素的元素找不到的解决办法
- #干货向#配合jquery实现异步加载页面元素
- select展开时 重新加载 option,ie 折叠问题 以及 chrome 没有变化问题
- IT忍者神龟之用 jreloader 动态重新加载改变的类而不用重启 JVM
- nginx重新加载配置(不停服)
- 屏幕大小改变或首次加载计算html根元素 fontsize
- WebDriver拾级而上·之九 等待页面加载元素完成
- Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)
- SmartImageView重新实现网络图片的加载
- JavaScript重新加载页面代码
- 双系统重装win7重新加载Ubuntu
- 不重启服务器重新加载Spring上下文
- JavaScript 刷新/重新加载当前页面
- 重新加载maven包
- List<T>自定义元素个数重新分组
- Unity中游戏重新加载玩家位置不变的方法
- gridpanel加态重新加载columnModel和store