2016-06-24 10 views
3

私はPythonを使用してSeleniumでオートメーションテストを書いています。 1つの要素が存在しても存在しなくてもよい。私は下のコードでそれを処理しようとしている、それは要素が存在するときに動作します。しかし、要素が存在しない場合はスクリプトが失敗し、要素が存在しない場合は次のステートメントに進みます。Selenium Python - Handlingこのような要素の例外はありません

try: 
     elem = driver.find_element_by_xpath(".//*[@id='SORM_TB_ACTION0']") 
     elem.click() 
except nosuchelementexception: 
     pass 

エラー -

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:{"method":"xpath","selector":".//*[@id='SORM_TB_ACTION0']"} 

答えて

4

要素が存在するかどうかを確認し、存在する場合はクリックします。例外の必要はありません。 .find_elements_*の複数の「s」に注意してください。

elem = driver.find_elements_by_xpath(".//*[@id='SORM_TB_ACTION0']") 
if len(elem) > 0 
    elem[0].click() 
2

あなたは例外をインポートしていませんか?

from selenium.common.exceptions import NoSuchElementException 

try: 
    elem = driver.find_element_by_xpath(".//*[@id='SORM_TB_ACTION0']") 
    elem.click() 
except NosSuchElementException: 
    pass 
-1

なぜこのようなロジックを単純化して使用しないのですか?例外は必要ありません。

if elem.is_displayed(): 
    elem.click() 
+0

要素が見つからない場合はスローされます。 – JeffC

4

間違った例外をキャッチしようとしています。 NoSuchElementExceptionではないnosuchelementexception