当前位置: 首页 > news >正文

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[2]/div[3]/div/a’)).click()

3.iframe或frame处理

在元素定位过程中,如果出现了或者标签,说明该页面中嵌套了一个新的页面,该页面内的元素无法直接定位。如:

因此,在定位新页面元素之前,我们需要先执行driver.switch_to.frame()方法,切换到该frame下面,再对该frame下的元素进行定位和操作

1)定位到iframe

iframe=self.driver.find_element_by_xpath(‘//*[contains(@id,“x-URS-iframe”)]’)

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去运行脚本(如下图)

这样的话就无法执行到main中的生成报告那部分代码,所以我们需要重新配置一下

(1)点击如下图位置Edit Configuration

(2)重新添加需要执行的文件

(3)点击apply-ok

(4)点击Run运行脚本即可

如果仍未解决,可以将光标放在if name == “main”:下,右击,选择“run +文件名”的执行方式执行即可。

(5)还可以尝试将Python tests部分删除后重新运行

5.setUp、tearDown执行多次的问题

setUp(连接数据库 、打开浏览器等)、tearDown(关闭数据库,关闭浏览器等)这样反复执行,会影响一个网站执行多个用例(多次打开和关闭浏览器,所有用例并没有全部执行完),数据库的话还会增加服务器资源的损耗,且浪费时间。

那么我们可以通过装饰器实现

最后:下方这份完整的软件测试 视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

​​​件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

http://www.jsqmd.com/news/724129/

相关文章:

  • 回收沃尔玛购物卡:最值得信赖的线上平台推荐 - 团团收购物卡回收
  • 如何快速解密NCM格式:网易云音乐用户的完整转换指南
  • DeMo优化器:分布式AI训练的高效通信解决方案
  • ncmdump终极指南:轻松解密网易云音乐NCM文件
  • 机器学习分类任务实战:从二分类到多标签处理
  • Downkyi:免费B站视频下载的终极解决方案,轻松获取8K超高清画质
  • Python单行代码在数据科学中的高效应用
  • EctoSpace/EctoClaw:构建可扩展数据采集框架的设计与实践
  • 平滑光标:提升在线代码编辑体验的浏览器扩展实现
  • 终极Gofile下载加速方案:告别龟速等待的完整指南 [特殊字符]
  • KaibanJS与Serper API集成:构建智能实时搜索系统
  • CSS响应式设计高级技巧
  • BricksRL:乐高积木与强化学习的低成本机器人学习平台
  • XYBot:基于Python的模块化机器人框架开发与自动化实践
  • 3分钟掌握音乐自由:解锁网易云NCM文件转换完整解决方案
  • 小红书无水印下载终极指南:XHS-Downloader完整技术方案解析
  • 【程序源代码】旅游景点导览APP管理系统
  • TensorFlow 2.x 升级踩坑记:手把手教你修复 ‘contrib‘ 等常见AttributeError
  • 合成数据驱动的SAR智能检测系统设计与实践
  • 飞书 CEO 力劝员工要少熬夜加班。有人夸他上大分,也有人吐槽“班已经加了,好话也让你说了”
  • 怀旧玩家的安卓7.1.2模拟器折腾记:用雷电4.0.50和Xposed复活那些老游戏和插件
  • 用Python从零实现一个动物识别产生式系统:不只是完成实验,更要理解规则引擎的设计思想
  • Hitboxer:彻底告别键盘冲突,解锁游戏操作新境界的终极按键重映射工具
  • DS4Windows终极控制器冲突解决指南:3步告别游戏手柄识别难题
  • 2026年目前军用电源品牌,新能源车载逆变电源/高功率密度电源/全国产化电源/新能源车载直流转换器,军用电源品牌有哪些 - 品牌推荐师
  • Python单行代码提速数据分析的7个实用技巧
  • 从设计到打印:Blender 3MF插件如何重塑你的3D打印工作流
  • ComfyUI-Manager:AI工作流管理的终极解决方案
  • 终极指南:如何在Windows系统上免费搭建虚拟串口调试环境
  • ARMv8/v9异常处理与FAR_ELx寄存器解析