selenium:解决页面元素display:none的方法
在UI自动化测试中,有时候会遇到页面元素无法定位的问题,包括xpath等方法都无法定位,是因为前端元素被设置为不可见导致。
这篇博客,介绍下如何通过JavaScript修改页面元素属性来定位的方法。。。
1、具体问题
常见的页面元素不可见导致的不可定位,都是由于下面的问题:
通过查看相关文档,可以看出display:none方法是设置元素不可见,这就是导致为什么通过定位页面元素无法定位的原因。
关于display更多的信息,可以看这里:HTML DOM display用法
2、解决方案
对于这种问题,可以通过JavaScript修改页面元素属性来将元素置位可见,然后通过id、classname等方法去定位,示例代码如下(针对上图所示):
js = “document.getElementById(“txtPassword”).style.display=‘block’;”
调用js脚本
#修改js隐藏内容为可见内容
js = "document.getElementById(\"cate_item1\").style.display='block';"
web.execute_script(js)
sleep(3)
#定位隐藏内容进行点击
web.find_element_by_xpath('//*[@id="cate_item2"]/div[1]/div[2]/dl[2]/dd/a[2]').click()