三尺非寒 发表于 2024-12-30 04:51:51

Selenium做Web自动化踩过的坑

1.无法定位到元素/定位元素超时(selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element/selenium.common.exceptions.TimeoutException)
在确定xpath无误的情况下,找不到元素的原因我碰到的大部分是等候时间较短,元素未加载出来,可以尝试用下面表现等候的方式解决
2.表现等候
如上所说的情况,在自动化实施过程中,尝尝会有在值实行某步操作或者某个命令之前,先看看要操作的元素是否处于表近况态、是否可操作等需求,也就是看看我们盼望的场景是否存在。
这时间就可以使用表现等候,会比较节省测试脚本实行时间,程序会每隔一段时间(默认0.5默秒,也可自界说)实行一下自界说的判定条件。如果条件成立,就实行下一步,否则继续等候,直到最长等候时间,然后抛出TimeoutException异常
例:
#最多等候10秒,直到要找的按钮出现并点击
from selenium.webdriver.support.wait import WebDriverWait
self.wait = WebDriverWait(self.driver, 10)
self.wait.until(lambda x: x.find_element(by=“xpath”,value=‘//*[@id=“app”]/section/main/div/div/div/div/div/div/div/div/div/div/a’)).click()
3.iframe或frame处置惩罚
在元素定位过程中,如果出现了或者标签,阐明该页面中嵌套了一个新的页面,该页面内的元素无法直接定位。如:
https://i-blog.csdnimg.cn/blog_migrate/c04164940749c3fa46865d5c24885850.png
因此,在定位新页面元素之前,我们需要先实行driver.switch_to.frame()方法,切换到该frame下面,再对该frame下的元素举行定位和操作
1)定位到iframe
iframe=self.driver.find_element_by_xpath(‘//*’)
2)切换到iframe
self.driver.switch_to.frame(iframe)
3)对iframe上的元素举行操作
self.driver.find_element_by_xpath(‘//*[@class=“j-inputtext dlemail j-nameforslide”]’).send_keys(“huisefen”)
self.driver.find_element_by_xpath(‘//[@class=“j-inputtext dlpwd”]’).send_keys(“-”)
4)退出iframe
如果想操作该frame以外的元素,可以通过driver.switch_to.parent_frame()方法切换到上一级frame,然后我们可以访问该框架外部而不是该框架内部的元素。这样就切换了控制;外部可以是网页的其他框架或一部分。这样我们就可以离开当前框架。
self.driver.switch_to.parent_frame()
4.运行乐成后未生成测试陈诉
使用unittest后运行时会默认用unittest去运行脚本(如下图)
https://i-blog.csdnimg.cn/blog_migrate/1cbaee64c638a01a987374f3bd814367.png
这样的话就无法实行到main中的生成陈诉那部分代码,所以我们需要重新设置一下
(1)点击如下图位置Edit Configuration
https://i-blog.csdnimg.cn/blog_migrate/f6453cedc24a6641024125ee62b82ab2.png
(2)重新添加需要实行的文件
https://i-blog.csdnimg.cn/blog_migrate/040d21db24602d81407d9af404373f4b.png
(3)点击apply-ok
(4)点击Run运行脚本即可
如果仍未解决,可以将光标放在if name == “main”:下,右击,选择“run +文件名”的实行方式实行即可。
https://i-blog.csdnimg.cn/blog_migrate/6064e4556ad1299b7641a1cf5f36a699.png
(5)还可以尝试将Python tests部分删除后重新运行
https://i-blog.csdnimg.cn/blog_migrate/cfecfb2a6a2eabc4e847fc2a70d993b0.png
https://i-blog.csdnimg.cn/blog_migrate/04eccbfc87c1ed63de6a72adde90dec3.png
5.setUp、tearDown实行多次的标题
setUp(毗连数据库、打开欣赏器等)、tearDown(关闭数据库,关闭欣赏器等)这样反复实行,会影响一个网站实行多个用例(多次打开和关闭欣赏器,全部效例并没有全部实行完),数据库的话还会增加服务器资源的消耗,且浪费时间。
那么我们可以通过装饰器实现
https://i-blog.csdnimg.cn/blog_migrate/020439634e7f890373645dbb77ce2e58.png
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋侪们如果需要可以自行免费领取 【包管100%免费】
https://i-blog.csdnimg.cn/blog_migrate/69d8f0d9807ca72d5525111ba8f515a3.png#pic_center
这些资料,对于【软件测试】的朋侪来说应该是最全面最完整的备战堆栈,这个堆栈也陪伴上万个测试工程师们走过最艰巨的路程,希望也能帮助到你!
软件测试技术交流群社:746506216(里面还有工作内推机会,毕竟我们是关系社会。)
软件测试口试文档

我们学习必然是为了找到高薪的工作,下面这些口试题是来自阿里、腾讯、字节等一线互联网大厂最新的口试资料,而且有字节大佬给出了权势巨子的解答,刷完这一套口试资料相信大家都能找到满足的工作。
https://i-blog.csdnimg.cn/blog_migrate/a46bdc1ffca6f2312f4ff41c372a5ad4.png#pic_center
口试文档获取方式:


https://i-blog.csdnimg.cn/blog_migrate/57ed0ec5fc12ddd4342c3c490da787eb.gif#pic_center

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Selenium做Web自动化踩过的坑