2017-12-18 299 views
2

我在python上使用了splinter模块。我需要检查一个元素是否可见或不在页面上,看似唯一的告诉方法是style="display: none;",我无法找到一种方法来检测。Splinter:按风格分类

如何检查?

回答

1

如果您需要检查一个元素是可见或不可见,使用.visible attribute

browser.find_by_css('h1').first.visible 

注意.visible是基于它是基于this WebDriver specificationis_displayed()蟒蛇硒方法,“自然”手柄style="display: none;"等案例。


如果你虽然出于某种原因需要使用style值来定位元素,你可以,当然,通过使用CSS选择这样做:

browser.find_by_css('[style="display: none;"]') 

但是这通常是脆弱,你应该寻找其他方法来找到这个元素。

请记住,您也可以随时找到多个元素,然后筛选只无形的元素,例如:

for h1 in browser.find_by_css('h1'): 
    if not h1.visible: 
     # found an invisible h1 here 
+0

注意'find_by_css(“[风格=‘显示:无;’]”)'会只能找到具有确切样式的元素,而元素可以继承被祖先隐藏,或者这样的CSS可以只是'style'标签的一部分。如果不采用'.visible'路由,下一个最好的事情可能是受[this](https://stackoverflow.com/a/651801/240443),browser.find_by_xpath('// div [没有(包含(@风格,'显示:无'))] // *')' – Amadan

+0

@Amadan是啊,字符串匹配在这里真的很脆弱。即使是子串检查也很容易被破坏 - 例如'display'之后没有空格,'none'之前没有空格。谢谢你的提示! – alecxe