2014-09-02 138 views
1

看一看下面的代碼:硒可見元素不會被識別爲可見

elem = driver.find_element_by_id(":8") 
elem.click() 
time.sleep(1) 

elem = driver.find_element_by_id("country_residence") 
print "elem visible ? = " + str(elem.value_of_css_property('visibility')) 
Select(elem).select_by_value("DE") 

打印指出,該元素是可見這一刻:

elem visible ? = visible 

不過,我得到以下錯誤信息:

selenium.common.exceptions.ElementNotVisibleException: Message: u'Element is not currently visible and so may not be interacted with' ; Stacktrace: 
    at fxdriver.preconditions.visible (file:///var/folders/0s/j6874rlj63qccjx38ltmwy880000gn/T/tmppJ09Vu/extensions/[email protected]/components/command_processor.js:8791:5) 
at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/0s/j6874rlj63qccjx38ltmwy880000gn/T/tmppJ09Vu/extensions/[email protected]/components/command_processor.js:11438:1) 
at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/0s/j6874rlj63qccjx38ltmwy880000gn/T/tmppJ09Vu/extensions/[email protected]/components/command_processor.js:11455:11) 
at DelayedCommand.prototype.executeInternal_ (file:///var/folders/0s/j6874rlj63qccjx38ltmwy880000gn/T/tmppJ09Vu/extensions/[email protected]/components/command_processor.js:11460:7) 
at DelayedCommand.prototype.execute/< (file:///var/folders/0s/j6874rlj63qccjx38ltmwy880000gn/T/tmppJ09Vu/extensions/[email protected]/components/command_processor.js:11402:5) 

這怎麼可能?

+1

行爲是否一致?增加'time.sleep()'間隔是否有助於或改變行爲?你能分享到網站的鏈接,以便我們也可以重現它嗎?謝謝。 – alecxe 2014-09-02 12:24:01

+0

附上html樣本,請見。謝謝。 – 2014-09-02 13:52:40

回答

1

Selenium檢查元素是否可見的方法是使用is_displayed()方法。鑑於你所描述的東西,如果你這樣做:

elem = driver.find_element_by_id("country_residence") 
print elem.is_displayed() 

你應該得到False結果。一個元素可能被隱藏有多種原因。該CSS屬性是visibility其中之一。還有display屬性。然後考慮元素的父母和祖父母的可見性會影響它是否可見。它可能在屏幕外等。

檢查元素的visibility隔離的CSS屬性絕對不是檢查它是否可以與之交互的方式。

0

Selenium瞭解該元素不僅可見/不可見,而且可見性屬性不可見。因爲它是硒的「is_visible」方法寫入:

知名度‘ 屬性設置爲‘隱藏’或‘顯示’屬性「決定了當指定元素可見的 元素可以通過設置CSS渲染無形’到「無」,無論是對於 元素本身,還是一個如果它的祖先。如果 該元素不存在,這種方法將失敗。

因此,回答你的問題「這可能怎麼樣?」 - 它(元素或它的祖先)可以沒有屬性「可見性」,但可以具有「顯示:無」屬性