详细讲解!selenium:解决页面元素display:none的方法

这篇具有很好参考价值的文章主要介绍了详细讲解!selenium:解决页面元素display:none的方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言:

1、具体问题

2、解决方案

代码解析:

结尾:


前言:

在进行 Web 自动化测试时,页面元素的可见性对测试结果的准确性和稳定性至关重要。然而,有些时候页面元素会被设置为 display:none,导致自动化测试无法找到或与之交互。

这篇博客,介绍下如何通过JavaScript修改页面元素属性来定位的方法。。。

1、具体问题

常见的页面元素不可见导致的不可定位,都是由于下面的问题:

详细讲解!selenium:解决页面元素display:none的方法

通过查看相关文档,可以看出display:none方法是设置元素不可见,这就是导致为什么通过定位页面元素无法定位的原因。

详细讲解!selenium:解决页面元素display:none的方法

关于display更多的信息,可以看这里:HTML DOM display用法

2、解决方案

对于这种问题,可以通过JavaScript修改页面元素属性来将元素置位可见,然后通过id、classname等方法去定位,示例代码如下(针对上图所示):

js = "document.getElementById(\"txtPassword\").style.display='block';"
# 调用js脚本
driver.execute_script(js)
sleep(3)
driver.find_element_by_id("txtPassword").send_keys("123456")

代码解析:

首先通过selenium封装好的方法document去找到display元素,document提供以下方法来定位display元素:

getElementById():返回对指定ID第一个对象的引用

getElementsByName() :返回带有指定名称的对象集合

getElementsByTagName():返回带有指定标签名的对象集合

详细讲解!selenium:解决页面元素display:none的方法

关于document更多的信息,可以看这里:HTML DOM getElement()方法

上面我定义了一个js变量,然后通过getElementById()方法去引用display元素,修改none属性为block属性(作为块级元素显示),然后通过selenium自带的execute_script方法执行脚本。

最后,当元素属性置为可见时,可以通过ID去定位元素。 

其实还有一个解决方案:让前端修改display:none为block就好了,但这样的话,带来的变化和安全风险又是需要考虑的问题。一个问题的解决总是伴随着新的问题,核裂变了解一下?

想起今天和同行聊天时说起的分裂BUG的话题,对话如下:

大佬N:核裂变的原理是通过中子撞击原子核产生多个新的原子核,原子核是已有的BUG,中子是修改BUG加上的代码,分裂之后这个bug消失了,取而代之的是更多的原子核(BUG)。

我:引起一个BUG的原因可能是多个,修改一段代码可能造成多个BUG,就像用新技术解决旧问题而带来的新问题一个意思。

结尾:

自动化本身最大的挑战还是变化,因此从分层测试角度结合公司项目具体情况,考虑解决问题的方法,才是最好的选择。

详细讲解!selenium:解决页面元素display:none的方法

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=eSv73sPKaVXpq9JeRq1Kboh1D-w19xXu&authKey=Qs1Sduo9tp2wfkOYvRyyFCoblyT7fBhH4PPisEb1G63n1UckS6wQU50e9ar1LAOz&noverify=0&group_code=574737577

详细讲解!selenium:解决页面元素display:none的方法文章来源地址https://www.toymoban.com/news/detail-485722.html

到了这里,关于详细讲解!selenium:解决页面元素display:none的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Selenium WebElement: Selenium 中的页面元素以及常用的属性和方法

    官方文档 本文是基于 Pytohn-3.7.4 以及 selenium-4.11.2 进行测试的,可以直接通过 pip 命令安装 selenium : 进入 python 交互界面,引入 selenium 包,检查安装结果: 在准备好 Python 环境之后,还需要安装浏览器程序, selenium 通过浏览器驱动的可执行文件对浏览器进行操作。 Windows 可以

    2024年02月10日
    浏览(45)
  • 【Python】Python 模块用法:selenium 4 版本页面元素定位方法汇总

    目录 一、定位页面元素方法源码说明  (1)Webdriver.common (2)selenium.webdriver.common.by (3)By 二、定位页面元素方法用法汇总 (1)2.0 及以下低版本 selenium :By 定位页面元素方法用法(可忽略) (2)3.0 ~ 3.9 版本 selenium:By 定位页面元素方法用法 (3)4.0 ~ 4.9 版本 selenium:

    2023年04月13日
    浏览(87)
  • selenium中ActionChains方法详细讲解

       本文将介绍Selenium中的ActionChains类及其使用方法,帮助您模拟用户在网页上的鼠标和键盘操作。了解ActionChains的常用方法和示例代码,可轻松实现移动鼠标、点击元素、拖拽元素等操作。通过本文的学习,您能更好地应用ActionChains解决自动化测试或网页爬取中的问题。

    2024年02月03日
    浏览(27)
  • selenium元素定位---ElementClickInterceptedException(元素点击交互异常)解决方法

    目录 前言: 1、异常原因 2、解决方法: 当使用Selenium进行元素定位和交互时,可能会遇到 ElementClickInterceptedException (元素点击交互异常)的异常。这通常是由于页面上存在其他元素或弹出窗口遮挡了要点击的元素。 在编写ui自动化时,执行报错元素无法点击:ElementClickInt

    2024年02月12日
    浏览(44)
  • Python+selenium自动化八大元素定位方法及实例(超详细)

    目录 一、selenium模块中的find_element_by_id方法无法使用 二、Python+selenium自动化八大元素定位方法 使用场景: 1、通过id属性定位:driver.find_element(By.ID,\\\"value\\\") 2、通过name属性定位:driver.find_element(By.NAME,\\\"value\\\") 3、通过class属性定位:driver.find_element(By.CLASS_NAME,\\\"value\\\") 4、通过tag_name属

    2024年02月19日
    浏览(47)
  • Selenium无法定位元素的几种解决方案(超详细整理)

    🍅 视频学习: 文末有免费的配套视频可观看 🍅  关注公众号【互联网杂货铺】,回复 1  ,免费获取软件测试全套资料,资料在手,涨薪更快 WebDriver只能在一个页面上对元素识别与定位,对于frame/iframe表单内嵌的页面元素无法直接定位。 解决方法: driver.switch_to.frame(id/

    2024年02月20日
    浏览(47)
  • selenium元素定位防踩坑---StaleElementReferenceException解决方法

    目录 1、异常原因 2. 解决方案 🎁更多干货 完整版文档下载方式: 执行调试报错:selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 意思是,引用的元素已过时。原因是页面刷新了,此时当然找不到之前页面的元素,就算

    2024年02月01日
    浏览(43)
  • display: none与visibility: hidden的区别

    引言: 在前端面试中,一般比较侧重JavaScript方面的考察,CSS布局方面考察的内容会相对少一些,其中display: none与visibility: hidden的区别是较常见的考点,这两个css配置都可以从视觉上隐藏DOM元素,那这两者的使用上有什么区别呢? 首先我们来看W3C中对display: none的描述: \\\'no

    2024年02月08日
    浏览(33)
  • [uniapp页面路由跳转]详细讲解uniapp中使用标签和的api完成页面跳转使用方法 代码注释

    Uniapp是一款基于Vue.js的跨平台开发框架,允许开发者使用同一套代码构建多个平台的应用程序,包括iOS、Android、Web、微信小程序、支付宝小程序、百度小程序、头条小程序等。在Uniapp中,页面跳转是非常重要的功能之一,本文将详细介绍Uniapp中页面跳转的各种标签和API的使用

    2024年02月20日
    浏览(52)
  • selenium页面元素定位、操作

       1、通过页面开发者工具(点击键盘F12或者空白处右击点击检查)中的element,查看页面html代码; 2、点击开发者工具左上角鼠标按钮; 3、鼠标移动至需要定位元素位置; 4、高亮显示; 5、右击选择定位方式。 1 打开 / 关闭浏览器 注意: 关闭浏览器close和quit的区别: 以

    2023年04月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包