专栏首页py+seleniumpy+selenium 自动判断页面是否报错并显示在自动化测试报告【原创】

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成,大大的减少人工检验。

现在的报告是这样:

如有错误,请及时指正,谢谢!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • from bs4 import BeautifulSoup 报错

    Python 2.7.14 (default, Sep 17 2017, 18:50:44) [GCC 7.2.0] on linux2 Type "help...

    逆向小白
  • py+selenium 明明定位不到元素,但却不报错或是报错AttributeError: 'list' object has no attribute 'click'【已解决】

    问题:定位不到元素,但却不报错或者出现报错AttributeError: 'list' object has no attribute 'click'

    逆向小白
  • 跨站脚本攻击(反射型)笔记(四)——较罕见的操作

    我们大部分情况下插入的xss代码,基本上都在参数值上!而今天举得例子在路径上! 

    逆向小白
  • 聊聊hystrix的queueSizeRejectionThreshold参数

    本文主要研究一下hystrix的queueSizeRejectionThreshold参数

    codecraft
  • 2018年不可错过的创意404报错设计

    404报错页面,作为提醒网站访问者服务器未找到请求资源或文件的页面,时常被UI/UX设计师,产品经理以及网页/软件开发者视作 (包括枯燥的登录页面,加载页面以及...

    用户1372273
  • leetcode 93. Restore IP Addresses

    用户1665735
  • ICO图标生成实例代码-PHP语言

    ico是Icon file的缩写,是Windows的图标文件格式的一种。图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的...

    申霖
  • delete与delete[]的区别

    一直对C++中的delete和delete[]的区别不甚了解,今天遇到了,上网查了一下,得出了结论。做个备份,以免丢失。

    瑾诺学长
  • 织梦广告管理功能增加图片上传

    华创信息技术
  • 使用JAVA进行ad域身份验证常用属性详解

    一些变态的公司经常对开发者提出一些变态的问题。比如在oa系统中,要求登录验证必须使用ad域进行登录。还有的如登录crm系统必...

    业余草

扫码关注云+社区

领取腾讯云代金券