2017-12-06 4 views
0

基本的には、特定のraw_inputテキストを持つページ上の要素を見つけてボタンを見つけてクリックすることができるボットを作成しようとしています。これは、まだWebページにないリンク(ボタン)をクリックすることですが、サイトの更新後に表示されます。このため、XPATHで要素を見つけることはできません。なぜなら、2番目のリンクが利用可能になるまで、XPATHは未知であるからです。ですから、私の質問は、Seleniumがテキストに基づいてボタンを見つけてそれをクリックする方法はありますか?ここに私のコードの一部です:Python Selenium:要素を見つけてTextに基づいてボタンをクリック

key1 = raw_input('Enter the first keyword: ') 
key2 = raw_input('Enter the second keyword: ') 
key3 = raw_input('Enter the third keyword: ') 

...

elem1 =driver.find_elements_by_xpath("//*[contains(text(), key1)]") 
    if elem1.is_displayed(): 
     elem1.click() 
    else: 
     print "Cannot find element to click. Retrying..." 
     driver.refresh() 

私はプログラムがキーワードに基づいてテキストを検索する必要があり、それには、これらのキーワードを持つボタン/リンクをクリックしてください。これは可能ですか?またはXPATHでのみ可能ですか? elemを与えて与えたサンプルコードは動作していません。すべての[OK]を最初に事前に

おかげ

答えて

0

は、テキストによる要素の選択の一つだけは、XPath悲しいことですが、心配しないで、あなたが待機

#Libraries (those comes with selenium, you don't have to install anything) 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

#Way 
elem1 = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, '//*[contains(text(), 
{})]'.format(key1)) 
) 
elem1.click() 

これを使用することができます回避策があります要素がクリック可能になるのを10秒後にクリック可能にするのを待つようにします。その要素が戻ってくると自動的に待機を中断します。

+0

大変ありがとうございました - ありがとうございました – cgreene

+0

素晴らしい、この回答に印を付けることができますか? –

関連する問題