2014-10-19 100 views
0

我知道這個問題已經在之前的一些迭代中被詢問過了。但即使在查看API後,我也無法弄清楚如何做到這一點。驗證元素是否存在硒

我想湊在Web上的數據,我有以下代碼:

browser = webdriver.Firefox() 
browser.get(url) 
browser.find_element_by_xpath('//path') 

現在find_element部分執行之前。我想知道這個元素是否存在。我已經試過如下:

try: 
    browser.find_element_by_xpath('//path') 
except NoSuchElementException: 
    print ('failure') 

if (browser.find_element_by_xpath('//path')[0].size() == 0): 
    print ('failure') 

但都沒有工作,即使API稱尺寸()是WebElement可調用的函數和例外是由find拋方法家族。我不明白爲什麼這些工作都沒有。但如果有人能給我一個解釋和一個工作的例子,我將不勝感激。

回答

2

如果元素缺失,您的第一個代碼片段應該提高NoSuchElementException。如果它不這樣做,那麼你的問題中的信息爲什麼是這樣。 (也許你希望它沒有找到一個元素,但它確實找到一個?)

第2段不能正常工作,因爲find_element_...方法返回WebElement對象,而不是對象的名單。你必須做的事:

if len(browser.find_elements_by_xpath('//path')) == 0: 
    print ('failure') 

注意複數find_elements_...的功能來尋找與複數返回列表的元素,如果他們沒有找到任何列表的長度是零。

順便說一下,對象上的size()方法返回元素的呈現大小,即它在頁面上的高度和寬度。

相關問題