selenium:解决页面元素display:none !important的方法

selenium:解决页面元素display:none !important的方法

在UI自动化测试中,有时候会遇到页面元素无法定位的问题,包括xpath等方法都无法定位,是因为前端元素被设置为不可见导致。

通过JavaScript修改页面元素属性来定位的方法

1.具体问题:

更改登录模式,测试环境登录界面被屏蔽,导致无法进行UI自动化测试

在这里插入图片描述
查看元素属性display:none !important ,这里的 !important 表示高优先级
在这里插入图片描述
页面调试:

在这里插入图片描述

2.问题解决:

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

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

放上我的代码

from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.maximize_window()
driver.get('http://...')

方式一:
设置style的属性
js = "document.getElementById('loginFormID').setAttribute('style','display:block !important')"

方式二:
使用setProperty  如果要设置!important,推荐用这种方法设置第三个参数
js = "document.getElementById('loginFormID').style.setProperty('display','block','important')"

# 调用js脚本
driver.execute_script(js)
sleep(5)
driver.find_element_by_id("accountID").send_keys("123456")
driver.quit()
代码解析:

document提供以下方法来定位display元素:

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

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

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

此篇博客记录工作问题,如果有相同问题的友友们,希望能带给你们便利。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值