【开源自动化测试疑难FAQ】【WebDriver】封装GET方法来解决页面跳转不稳定的问题
来源:互联网 发布:淘宝每日抽红包链接 编辑:程序博客网 时间:2024/05/16 02:08
在大多数测试环境中,网络或者测试服务器主机之间并不是永远不出问题的,很多时候一个客户端的一个跳转的请求会因为不稳定的网络或者偶发的其它异常hang死在那里半天不动,直到人工干预动作的出现。
而WebDriver测试执行时,偶然也会因此发生页面跳转或者加载的超时异常,而使得流程性的测试中断,给测试完整性和有效性带来很大的损失。其实这种问题很好解决,只需要重写或者封装一下GET方法来实现跳转就行了。
在做这个封装之前,我们得事先讲一下driver.get(url)和driver.navigate().to(url)之间的差别:
- driver.navigate().to(url):跳转到指定的url,只执行跳转动作,不判断、不等待指定的页面是否加载成功;
- driver.get(url):跳转到指定的url,并且检查页面是否加载完毕,如果指定了pageLoadTimeout,而在指定时间内没有加载完毕则会抛出org.openqa.selenium.TimeoutException;
/** * rewrite the get method, adding user defined log</BR> * 地址跳转方法,使用WebDriver原生get方法,加入失败重试的次数定义。 * * @param url the url you want to open. * @param actionCount retry times when load timeout occuers. * @throws RuntimeException */protected void get(String url, int actionCount) {boolean inited = false;int index = 0, timeout = 10;while (!inited && index < actionCount){timeout = (index == actionCount - 1) ? maxLoadTime : 10;//最后一次跳转使用最大的默认超时时间inited = navigateAndLoad(url, timeout);index ++;}if (!inited && index == actionCount){//最终跳转失败则抛出运行时异常,退出运行throw new RuntimeException("can not get the url [" + url + "] after retry " + actionCount + "times!");}}/** * rewrite the get method, adding user defined log</BR> * 地址跳转方法,使用WebDriver原生get方法,默认加载超重试【1】次。 * * @param url the url you want to open. * @throws RuntimeException */protected void get(String url) {get(url, 2);}/** * judge if the url has navigate and page load completed.</BR> * 跳转到指定的URL并且返回是否跳转完整的结果。 * * @param url the url you want to open. * @param timeout the timeout for page load in seconds. * @return if page load completed. */private boolean navigateAndLoad(String url, int timeout){try {driver.manage().timeouts().pageLoadTimeout(timeout, TimeUnit.SECONDS);driver.get(url);return true;//跳转并且加载页面成功在返回true} catch (TimeoutException e) {return false;//超时的情况下返回false} catch (Exception e) {failValidation();//共用的异常处理方法LOG.error(e);//记录错误日志throw new RuntimeException(e);//抛出运行时异常,退出运行}finally{driver.manage().timeouts().pageLoadTimeout(maxLoadTime, TimeUnit.SECONDS);}}
- 【开源自动化测试疑难FAQ】【WebDriver】封装GET方法来解决页面跳转不稳定的问题
- WebDriver封装GET方法来解决页面跳转不稳定的问题
- WebDriver封装GET方法来解决页面跳转不稳定的问题
- 【开源自动化测试疑难FAQ】【WebDriver】WebDriver启动时白屏挂起问题解决方法(一)
- 【开源自动化测试疑难FAQ】【WebDriver】WebDriver启动时白屏挂起问题解决方法(二)
- 【开源自动化测试疑难FAQ】【WebDriver】WebDriver对SWFUpload的无奈之举
- 【开源自动化测试疑难FAQ】【WebDriver】RemoteWebDriver日志问题处理过程
- 【开源自动化测试疑难FAQ】【WebDriver】几种类型的组件的判断
- 【开源自动化测试疑难FAQ】【WebDriver】不可编辑域和日历控件域的输入
- 【开源自动化测试疑难FAQ】【框架】使用批处理进行过期的测试结果和空目录清理
- 【开源自动化测试疑难FAQ】【框架】测试数据之CSV文件的读写(带编码格式)
- 【开源自动化测试疑难FAQ】【框架】EXE/VBS/BAT/SHELL等文件的调用安全守护
- 【开源自动化测试疑难FAQ】【框架】TestNG运行失败汇总XML文件格式重塑
- Google的开源自动化测试框架
- 开源自动化测试工具selenium的使用
- Twitter的开源自动化测试工具diff
- KDATFFS 开源自动化测试框架
- 开源自动化测试框架Tellurium
- CProgressCtrl控件 VC++
- LDAP快速入门
- MSSQLServer连接字符串书写便捷方法
- Linux常用命令全集
- 创业法则N条
- 【开源自动化测试疑难FAQ】【WebDriver】封装GET方法来解决页面跳转不稳定的问题
- 天线对北是怎么回事?
- 20-Cocoa和Cocoa Touch简介
- 遍历python字典几种方法
- jar包中maniest.mf详解
- [转]Vi/Vim查找替换使用方法
- c# 让datagridview的某行获得焦点
- 移动广告平台及运营模式
- Linq加载失败