2013-07-29 26 views
1

我試圖用selenium webdriver進行測試。我的硒版本是2.33,瀏覽器是Firefox。腳本語言是python當調用find_element方法時,Selenium Webdriver卡住了一個不存在的部件

現在當我調用方法find_element_by_xpath(blabla)如果小部件不存在。該程序只是卡在那裏,沒有例外。它只是卡住了。順便說一下,我試過find_element_by_id,find_element_by_name,find_elements並將Firefox更改爲3.5,14.0,21.0,22.0。問題總是出現。

有人有這個問題嗎? 我只是想要一個異常不僅僅是卡住了。幫助...

回答

1

find_element_ *如果找不到元素,則會提高selenium.common.exceptions.NoSuchElementException

find_elements_ *如果未找到元素,則返回空列表。

這兩個函數都沒有卡住。

根據Selenium documentation

4.1。按Id查找

當您知道元素的id屬性時使用此項。使用此策略,將返回與該位置匹配的id屬性 值的第一個元素。如果沒有元素具有 匹配的id屬性,則將引發NoSuchElementException。

...

4.2。按名稱查找

當您知道元素的名稱屬性時使用此項。使用此策略,將返回名稱屬性爲 的值與該位置匹配的第一個元素。如果沒有元素具有 匹配的名稱屬性,則將引發NoSuchElementException。

+0

非常感謝您的支持。我在大多數時間都會看到這個例外。但真相有時它只是被困住了。我不知道爲什麼。如果我將xpath更改爲一個存在的小部件,它不會再卡住 – ogre

+0

這也幫助了我!非常感謝:) –

0

如果您確定該元素位於文檔上,則可以使用WebDriverWait函數。您應該在from selenium.webdriver.support.ui import WebDriverWait開頭定義WebDriverWait,如果您之前沒有定義from selenium.webdriver.common.by import By,那麼請使用WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "blabla"))) 這就是我們需要做的。我希望這能幫到您。

+0

那麼這意味着我必須等到超時?我只是想要一個快速異常,使用超時會浪費大量時間到我的工作 – ogre

+0

我通常使用Xpath這種類型的工作人員,更成功。如果頁面加載所有元素,硒可以找到它們。你需要找到一些東西(path,class_name等),你可以毫無例外地找到這個元素,那麼你也可以跳過這個異常。 –

相關問題