• 12
  • 12
分享

  当纯手工测试已经不能满足项目的需要时,我们就引入了自动化测试,下面我来列举一下我在学习Selenium+Python的过程中遇到的坑以及解决方法。

  找不到测试用例No tests were found

  大多数初学者可能从开始到结束写一个操作流程,都能很流畅的写下来,但是这种只适应于回归测试,用自动化脚本进行整体功能的回归测试,不适应于对某个具体功能进行详细测试,那么这个时候就引入了UnitTest,对测试用例进行管理。

  但对于初学者来说,从一个文件分化到多个文件,方法使用规则的不清晰等等,都可能导致测试失败,这个问题就是在使用UnitTest管理用例的时候遇到的问题。

1-1.png

  执行结果提示找不到测试用例。

  我遇到这个问题的时候,试了很多方法,一开始以为是代码哪里调用的不对,各种查,从网上也各种搜索解决方法,说什么的都有,但是尝试之后都没有得到解决。

  然后我又对比了之前跟着学习视频练习的例子发现,在练习中我编写测试用例的方法都是以test开头,而我在实际应用中的用例并没有以test开头,就在想是不是这个影响的呢?

  然后我就将所有的测试用例的方法都加上了test前缀,一运行果然测试用例都执行了。那么如果我们的用例不想以test开头怎么办呢?

  既然我们已经找到了问题所在,我们就可以针对具体问题来从网上查询原因了。通过一步步进入方法查看所得,我们找到了TestLoader函数。如下图:

1-2.png

  我们发现,这个方法里定义的查找测试用例的前缀就是test。如果我们想用其他前缀来定义方法,将这里的前缀改成ceshi,然后将所有的测试用例都加上ceshi前缀,运行代码:

1-3.png

  果然执行成功。

  这里给小伙伴们写一下如何定位到这里。

  1)通过左侧导航栏:

1-4.png

1-5.png

  另一种方法就是找到方法里调用查询测试用例的方法。

1-6.png

  将鼠标放到这里,然后点击Ctrl+B进入方法,进入到了如下方法:

1-7.png

  再将鼠标放到这里,Ctrl+B进入具体方法:

1-8.png

  页面上下拉选项的值未加载出来

  小编遇到这种问题的时候也是各种不解啊,当时测的是新增客户的页面,由于之前写的代码都是每一条用例都会刷新一下当前页面,我想改成不刷新当前页面,每次只打开新增页面,就将页面刷新的操作放到了setUp方法中(人工填写非复制)。

  但是放过去之后,执行用例发现,页面加载出来了,但是客户性别的下拉框没有数据,默认值也未显示,网上查询各种方法都不好使,尝试未果后,我只能将现在代码与之前能跑通的版本的代码进行了对比,对比发现,url里多了一个/。

  之前能跑通的代码:

1-9.png

  当前跑不通的代码:

1-10.png

  我在修改获取页面的操作时,将网址写错了,就是多了一个斜线,导致了程序无法运行。

  找到问题后,我手动在浏览器上错误的地址,然后新增,查看页面信息,果然手动操作下拉框的值也未加载。

  这个经验告诉我们,请求的url一定要填写正确,不能是自己以为的,也不能觉得多一个/少一个/无所谓。如果真是url写错导致用例执行失败,真的很难定位问题。

  定位不到元素

  涉及到页面切换的时候,往往就是元素定位问题存在最多的地方,我们以百度为例:

1-11.png

  百度首页点击“更多”,跳转到了新的页面:

1-12.png

  图片

  新页面点击小度商城,跳转到商城页面,下面我们来写一下代码:

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_link_text("更多").click()
driver.find_element_by_link_text("小度商城").click()

  运行代码我们发现,并没有成功定位到“小度商城”的链接:

1-13.png

  换了多种元素定位方式都不行,依然定位不到。在网上各种搜索解决方案也未找到解决方案。后来网上偶尔看到窗口切换的文章,就在想是不是因为弹出了新页面的原因,导致程序未定位到当前跳转的页面,而是还在之前的页面。有了想法之后,马上修改了代码,如下:

driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
driver.find_element_by_link_text("更多").click()
#获取所有的句柄(浏览器所有的Tab页)
hand=driver.window_handles
print(hand)
#页面定位到最大的页面(最后打开的页面)
driver.switch_to_window(hand[1])
driver.find_element_by_link_text("小度商城").click()

  执行代码发现,执行成功了。

  解决该问题的过程,让我明白了,眼睛看到的不一定是真的,虽然我们肉眼看到页面上显示已经切换到最新的页面,但是代码里不一定是,如果遇到页面跳转的情况,我们还需要确定代码里当前定位到的是哪个页面,再进行对元素的定位。

  以上三个问题,虽然都不是什么大问题,但是如果方向找过了,容易一直绕在里面找不到解决的办法。这几个问题是我在学习实践的过程中遇到的花费时间较长的问题,希望对大家能有所帮助。



作者:CICI   

来源:http://www.51testing.com/html/51/n-5002251.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,亚马逊CEO安迪·贾西公司已经在人工智能大战中落后。  他对亚马逊在人工智能领域落后于微软和谷歌的说法进行了反驳。尽管后两家科技巨头已经将聊天机器人融合到各自的搜索引擎中,但贾西却认为目前还处于“炒作周期”,尚未进入“实质周期”。  “我认为多数人都关注这类应用,比如ChatGPT引发了大家的关注,但生成式人工智能有三个主要的层(即应用层、模型层和基础设施层),我认为它们都很重要”,贾西称。  贾西曾经表示,亚马逊计划在整个公司范围内投资人工智能,但人工智能程序有潜力增强“几乎所有的客户体验”。但他特意指出了亚马逊云AWS,认为这是能够长期利用人工智能热潮的一项业务。  今年早些时...
            0 0 1026
            分享
          • 1.Android APP 内存不足时,如何获得内存?系统优先结束被挂起(暂停)的进程,释放内存。 2.APP 测试常见问题有哪些?原因有哪些?常见的有 crash、ANR(应用无响应、卡死等),一般由设备碎片化、网络波动大、内存泄漏、代码编写错误。 3.APP 自动化测试工具有哪些,并简要介绍1)APP UI测试工具:①uiautomator2openatx开源的ui自动化工具,支持Android和iOS。主要面向的编程语言是Python,API设计简洁易用②Appium基于Node.js的一款非常成熟的APP UI自动化工具,支持多种语言开发,在测试圈非常流行,可以说是...
            1 4 14161
            分享
          • 在上一小节,我们简单介绍了接口文档,以及对于接口本身的测试,从本小节开始我们来介绍一下业务功能的测试。需求分析我们先给一份产品需求如下:点击“我喜欢”按钮,调起一个弹窗,展示我喜欢的明星列表;明星排列顺序按照添加时间倒序排列;可分页展示,向上划动,可展示下一页内容,每页最多展示2条内容。我们逐条分析一下,这几条都分别是由哪些开发同学负责:肉眼可见的按钮一定是由前端或者客户端来完成,不是我们测试重点;倒序排列,前后端均可完成,但一般是由后端处理完成后,交给前端客户端展示,这是接口测试的重点;前后端均可完成。但如果是由前端完成,那么后端需要把所有数据一次性给到前端,我们想一下如果数据量巨大,那么对...
            0 0 2076
            分享
          • 当前的风气是,谈测试,必言“接口”。其实接口并不神秘,当今的应用中无处不是“接口”,从本篇开始让我来谈一些关于接口的浅薄认识。一个简单的接口(demo.php)<?php     // 文件名称demo.php     // 告诉浏览器返回为json类型     header('Content-Type:application/json; charset=utf-8');     //...
            1 0 1799
            分享
          •   马克-扎克伯格(Mark Zuckerberg)并不吝啬分享他对苹果公司产品或战略的看法,同时还不断强调苹果公司和 Meta 公司之间相互竞争的愿景。在最近的一次采访中,这个话题再次被提起,扎克伯格毫不避讳地分享了他的观点,即他的公司与蒂姆-库克的公司在本质上是完全不同的。他甚至还批评了苹果公司的产品开发方法。  马克-扎克伯格在一次采访中强调,Meta 实际上与苹果截然相反,并着重介绍了他的公司如何为创新提供空间。  虽然苹果和 Meta 的产品线不同,但 Meta Quest 和 Vision Pro 一直是竞争对手,两家公司之间形成了竞争的氛围。马克-扎克伯格(Mark Zucker...
            0 0 418
            分享
      • 51testing软件测试圈微信