py+selenium 自动判断页面是否报错并显示在自动化测试报告【原创】
有需求就会去研究解决的路子。
现在需求就是,测试报告报错信息一堆,但却无法肉眼看出是什么问题,你只能知道定位不到元素或是超时,但你却不知道其实进入页面就报错了或是提交表单就报错了!也就是看到报错,需要进一步去手工实际操作看看到底为啥定位不到元素或是为啥超时了。
这就是平常比较抓头的测试报告图。

最近我就想写个方法,判断页面报错,显示在测试报告里,减少手工的检验,其实也很简单。
# 测试进入页面是否报错
def httpcode(self, link): self.driver.switch_to.parent_frame()
self.driver.switch_to.frame("fraLeftFrame") # 拼接当前访问的url
# href = self.driver.find_element_by_link_text(link).get_attribute('href')
href = self.driver.find_element_by_xpath("//a[text()='%s']" % link).get_attribute('href')
href = re.findall("(\/.*)\"\)", href)
ipport = re.findall("(http://.*)\/", self.driver.current_url)
url = ipport[0] + href[0] cookies = {"JSESSIONID": self.driver.get_cookies()[0]['value'], "jforumSSOCookieNameUser": "xxxx"} res = requests.get(url, cookies=cookies, stream=True) # 判断是否响应200
if res.status_code != 200: print("********** http请求错误,页面报错 **********\n"
"(访问", url, "页面报错", res.status_code, ")\n")
raise urllib.error.HTTPError()
else:
print("********** http请求响应200 **********") self.driver.switch_to.parent_frame()
self.driver.switch_to.frame("fraRightFrame")
无视方法里前后的进入frame哈,由于页面需要登录,所以我需要获取当前cookie加入到request里,这个根据你自己的系统实际需求设计。
其实主要的思路就是,访问页面时,用request请求对应页面(因为无直接链接,所以上面的代码是拼接出页面的链接),根据响应是否为200来判断页面是否报错,如果非200,那就抛出异常。
而调用时,则是放在显示等待前面,这样页面报错,就不用去跑30秒等待着元素了,报错反而更快的退出进入下一条用例。

上面是页面访问报错的问题处理,而下面我又写了个,提交表单报错的处理,更简单。
仅提供思路,不一定适用所有系统。
因为目标系统提交报错跳转的报错页面,都是同个页面,那么就可以通过定位报错页面里面的某个元素来判断,如果发现元素存在则抛出异常,不存在则继续。

虽说上面两种方法,不能将所有报错可能都判断出来,但也至少判断了7成,大大的减少人工检验。
现在的报告是这样:

如有错误,请及时指正,谢谢!
py+selenium 自动判断页面是否报错并显示在自动化测试报告【原创】的更多相关文章
- py+selenium+unittest遇到HTMLTestRunner_cn文件报错:ZeroDivisionError: float division by zero【已解决】
问题:遇到HTMLTestRunner_cn文件报错:ZeroDivisionError: float division by zero HTMLTestrunner_cn.py是从网上下的,照理说应 ...
- selenium + PhantomJS使用时 PhantomJS报错解决
selenium + PhantomJS使用时 PhantomJS报错解决 在做动态网页爬虫时用到了selenium + PhantomJS,安装好之后运行时报错: UserWarning: Sele ...
- 刚新建好的动态网站项目,创建jsp页面就报错
拿到刚刚可以运行的Eclipse,就马上想敲码了,但一创建项目之后再创建jsp页面就报错= =! 报错的内容大概为缺乏对应的jar包. 我们常用Tomcat为中间体,而他本身是带有开发jsp网站的对应 ...
- 刚新建好的动态网站项目,创建jsp页面就报错??
拿到刚刚可以运行的Eclipse,就马上想敲码了,但一创建项目之后再创建jsp页面就报错= =! 报错的内容大概为缺乏对应的jar包. 我们常用Tomcat为中间体,而他本身是带有开发jsp网站的对应 ...
- php引入html页面 css报错 404
php引入html页面 css报错 404, html页面内 有css, 有一样 是这么写的 结果就报错了, 原来是 -moz这一句,在这句前面随便加一句别的样式就可以....
- 访问远程mysql数据库,出现报错,显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQL server“
在使用Navicat for MySQl访问远程mysql数据库,出现报错,显示“1130 - Host'xxx.xxx.xxx.xxx' is not allowed to connect to t ...
- 如何解决JSP页面顶端报错 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
题目有点长,昨天刚接触jsp,按照网上的教程安装完 tomcat 和 eclipse EE 之后,新建jsp文件却出现了如下报错: The superclass "javax.servlet ...
- Django-自己写的py文件调用models&Non-ASCII character报错&url接收参数
1.这个设置是网上能查到的最多的,但是没解决我的问题: Django的models.py在外部独立使用,新建一个文件夹,和monitor1目录平级 import sys,os sys.path.app ...
- eureka2.0页面404报错问题--之坑
eureka页面报错问题404页面如下 在复制pom文件的时候,记得启动eureka注册中心的pom文件引入依赖是否正确 启动类注解也要注意是否引用正确
随机推荐
- 如何Update跨表修改数据
大家都知道用Update修改单个表的使用方法,现在来看一下用update 跨表修改数据: 首先创建表 a 然后创建表b 现在要把表b的company 根据ID更新到表a 方法一: update a ...
- ef 查询总结
1.Linq 查询两张表:a表和b表,要得到的数据是a表数据b表没有 例如:a表有5条数据1,2,3,4,5:b表有2条数据1,3:那么就用dataGridView1输出2,4,5:link语句要怎么 ...
- 使用 acl 编写 UDP 网络程序(UDP 重传及可靠性机制)
在当今网络世界,虽然大部分网络应用都是基于 TCP 的,但有时 UDP 的网络通信也有用武之处.acl 的网络库中不仅提供了基于 TCP 的网络套接字流,同时也提供了 UDP 的网络库(目前 acl ...
- PHP PSR4自动加载代码赏析
第一部分是引入自动加载配置文件 1.入口文件:autoload.php里面没什么东西,就是导入ComposerAutoloader主题文件,一般由一个复杂的名字,不过不用担心就是机器随机生成的一个码而 ...
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发1-准备工作
/****** Object: 新闻表 Script Date: 2017/9/2 星期六 15:11:12 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENT ...
- Spring cloud stream【入门介绍】
案例代码:https://github.com/q279583842q/springcloud-e-book 在实际开发过程中,服务与服务之间通信经常会使用到消息中间件,而以往使用了哪个中间件比如 ...
- postman --- 如何在用户登陆和CSRF验证的场景下使用
一.前提 安装postman和Postman Interceptor postman应用放到桌面: 二.用户登陆 这种场景很简单,只要开启Interceptor,然后先请求登陆地址,再继续请求其他地址 ...
- MCtalk对话学吧课堂:真正的K12在线教育才刚刚开始
课堂之外的在线教育已经被大部分家庭所熟知,既涌现出了VIPKID等行业独角兽,也有大量致力于科技改变教育的新兴机构获得了快速成长.成立于2014年的学吧课堂就是专注在K12在线教育领域的创新机构,他们 ...
- spring 5.x 系列第20篇 ——spring简单邮件、附件邮件、内嵌资源邮件、模板邮件发送 (代码配置方式)
源码Gitub地址:https://github.com/heibaiying/spring-samples-for-all 一.说明 1.1 项目结构说明 邮件发送配置类为com.heibaiyin ...
- Consul&Nginx&Registrator&ConsulTemplate部署高可用负载均衡
1. Consul Server 创建consul server虚拟主机 docker-machine create consul 出现如下内容即创建成功 Running pre-create che ...