2016-07-30 7 views
2

python、セレニウム、Win 7で作業しています。ボタンをクリックして、このwebPageにあるクリック可能になった後、waitで処理しました。showmore Commentsボタンをクリックして、スクレイプするためのコメントを表示します。より多くのコメント。最初のボタンの後、私はコメントを抽出することができます。セレンpython3を使用して1つのWebページで2番目のボタンをクリックするにはどうすればよいですか?

from selenium import webdriver 
from selenium.common.exceptions import NoSuchElementException 
import selenium.common.exceptions 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support import expected_conditions as EC 
import selenium.webdriver.support.ui as UI 

driver = webdriver.Firefox() 
driver.get("http://www.aljazeera.com/news/2016/07/erdogan-west-mind-business-160729205425215.html") 
wait = UI.WebDriverWait(driver, 10) 
next_page_link = wait.until(
       EC.element_to_be_clickable((By.ID, 'showcomment'))) 
next_page_link.click() 

wait = UI.WebDriverWait(driver, 20) 
next_page_link2 = wait.until(
       EC.element_to_be_clickable((By.LINK_TEXT, 'Show more comments'))) 
next_page_link2.click() 

v = driver.find_elements_by_class_name('gig-comment-body') 
print(v) 
for h in v: 
    print(h.text) 

が、2番目のボタンは、例外を与えるむしろクリックすることができません:

selenium.common.exceptions.TimeoutException:

問題は何ですか?

+1

:)あなたはここに、このリンクのためのHTMLを共有することができます??または、他のロケーターを試しましたか?または、 'By.PARTIAL_LINK_TEXT'を使って試してください。 –

+0

@SaurabhGaur HTMLの場合は、上記のリンク先に移動できます。私は他のセレクタも試みましたが、すべて無駄でした。 – Ali

+0

私は今あなたのリンクに与えられたHTMLを見ることができません。なぜなら、私はPCではないからです。リンクHTMLをここで共有しているからです。 –

答えて

0

は、私はあなたが以下のようにクリックし実行するためにexecute_script()を使用してみてくださいと思う:

next_page_link2 = wait.until(
     EC.element_to_be_clickable((By.XPATH, '//div[contains(text(),"Show more comments")]'))) 

#now click this using execute_script 
driver.execute_script("arguments[0].click()", next_page_link2) 

はそれが役に立てば幸い...

+0

@Saurah Gaur。いいえ。 – Ali

+0

@Aliには例外がありますか? –

+0

@Saurah Gaur。同じような例外があります: '要素はポイント(546.9833374023438、23.850006103515625)でクリック可能ではありません。 ' – Ali

関連する問題