2017-12-18 311 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