2016-08-21 14 views
0

こんにちは、私はセレンを学ぼうとしています。Python Selenium Detection Error?

私が抱えている問題は、要素が検出されていないということです。私が扱っているhtmlコードは、ここでは強調表示されていますhttps://gyazo.com/a76608d4c4e9fc3bd29412436604c173。そのコード行は私のプログラムを停止し、私にエラーhttps://gyazo.com/72fc72e6488578c9c2a50b71311602c5を与えました。時にはそれが境界線なし、コメントフォームコメントフォームを切り替えるため

私はTextAreaクラスを検出するために使用していたコードは

comment=driver.find_element_by_xpath("//form[@class='comment-form no-border-top']/div/*[1]") or driver.find_element_by_xpath("//form[@class='comment-form']/div/*[1]") 

です。

私の考えは、if(comment!= none)のような条件付き代入演算子のチェックを使用することです:何かをしますが、私の理解によれば、これを許さないのです。

私のxpathが信頼できる方法であるかどうか、何をすべきかに関する提案はありますか?

+0

リンク先の画像ではなく、HTMLコードとエラーメッセージをテキストとして質問に追加してください。また、私はあなたが意図したと思うコードにあなたの質問のコードを編集しました。 – mhawke

+0

'comment = foo()またはbar()'を実際に使用している場合、 'comment'は[truthy](https://www.udacity.com/wiki)の間のブール値' or'の結果になります/ cs258/truthiness-in-python)の2つの関数呼び出しの値です。 –

答えて

0

解決しようとしている問題が実際に条件付きの割り当てである場合は、知りたいことが2つあります。

最初はあなたが行うことができるということです。

あなたはこのようにそれをしなければならない(コメント=なし!)

場合:

comment = Foo() 
if comment is None: 
    comment = Bar() 

セカンド、多分あなたはを試してみてくださいcommentを割り当てると、最初の呼び出しでエラーがスローされた場合rはちょうどNoneではありません。その場合はtryを試してみてください。

from selenium.common.exceptions import NoSuchElementException 
try: 
    comment = driver.find_element_by_xpath("//form[@class='comment-form no-border-top']/div/*[1]") 
except NoSuchElementException: 
    comment = driver.find_element_by_xpath("//form[@class='comment-form']/div/*[1]")