IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 自动化测试:学习Selenium+Python的过程中遇到的坑和解决方法 -> 正文阅读

[开发测试]自动化测试:学习Selenium+Python的过程中遇到的坑和解决方法

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

找不到测试用例No tests were found

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

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

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

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

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

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

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

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

果然执行成功。

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

1)通过左侧导航栏:

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

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

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

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

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

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

之前能跑通的代码:

当前跑不通的代码:

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

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

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

定位不到元素

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

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

图片

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

driver = webdriver.Chrome()

driver.get("http://www.baidu.com")

driver.find_element_by_link_text("更多").click()

driver.find_element_by_link_text("小度商城").click()

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

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

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()

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

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

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

最后:

可以我的个人V:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-03-21 21:22:01  更:2022-03-21 21:25:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/18 0:28:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码