2016-11-29 19 views
0
私は http://disqus.com/

Pythonのセレンは、ボタンのクリック

HTMLにdiscussonスレッド上でより多くのコメントを表示するためのボタンをクリックしようとしています

は次のようになります。私は、XPathからを使用してみましたが

<div class="load-more" data-role="more" style=""> <a href="#" data-action="more-posts" class="btn load-more__button">Show more</a> </div>

driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver") 
driver.get(url) 
driver.find_element_by_xpath('''//*[@id="posts"]/div[3]/a''').click() 

ただし、NoSuchElement例外が発生します。

このタイプのHTMLでボタンをクリックする適切な方法は何ですか?

UPDATE:勤務私は特定のiFrameに切り替え:

element = driver.find_element_by_class_name('load-more') element.click()

注:それは上の実行されたときclick()が動作しなかったことを次にクラス名によってロード

driver.switch_to.frame('myID') 

同じ行のようにdriver.find_element_by_class_name('load-more').click()

+0

適切に// [テキスト('ですが)このリンクは 'iframe'の中に置くことができるので、' driver.switch_to_frame(iframe_id) 'の後にのみ処理することができます – Andersson

+0

要素がクリック可能になるのを待つ必要があるのは、' eleme nt_to_be_clickable' – ettanany

+0

Seleniumで要素を選択する方法をいくつか試してみることもあります。いくつかのページはある方法で別のものよりもうまく機能します。 'find_elements_by_class_name(" btn load-more__button ")'を試したことがありますか? – Lost

答えて

0

Xpathは要素を見つけるための最後の手段である必要があります。あなたのケースのために、私は、化合物のクラス名が有効でないと動作しませんbtn load-more__buttonを使用して

driver.find_element_by_class_name("load-more__button"));

をしようとするだろう。

まだ動作しない場合は、Xpathの前にCSSセレクタを使用することをお勧めします。

しかし、これらのオプションのどれも動作せず、Xpathがまだ機能していない場合は、FirebugアドオンをFirefox用に使用して、使用しているXpathが正しいことを確認する必要があります。

ここでは、Firebugをし始めるのに役立つかもしれない、私の他の回答の一部です:= "ショー

https://stackoverflow.com/a/38980488/3537915

https://stackoverflow.com/a/38723782/3537915

https://stackoverflow.com/a/38744577/3537915

関連する問題