2016-04-29 12 views
1

私は定期的にウェブサイトで特定のアップデートをチェックするPythonプログラムを作成しようとしています。サイトは保護されており、監視したいページにアクセスするには複数のクリックが必要です。残念ながら、特定のボタンをクリックする方法を理解しようとしています。エラー:私はボタンにアクセスし、常に「selenium.common.exceptions.NoSuchElementException」を取得するためにさまざまな方法を試してみましたSeleniumとPython 2.7を使用してフォームのボタンをクリックするにはどうすればよいですか?

<input type="button" class="bluebutton" name="manageAptm" value="Manage Interview Appointment" onclick="javascript:programAction('existingApplication', '0');"> 

:ここでは、ボタンのコードです。ボタンにアクセスするための明白なアプローチは、XPathであるとChromeのXPathヘルパーツールを使用して、私は次の取得:

browser.find_element_by_xpath("/html/body/form/table[@class='appgridbg mainContent']/tbody/tr/td[2]/div[@class='maincontainer']/div[@class='appcontent'][1]/table[@class='colorgrid']/tbody/tr[@class='gridItem']/td[6]/input[@class='bluebutton']").submit() 

は、私はまだ取得:次のように

/html/body/form/table[@class='appgridbg mainContent']/tbody/tr/td[2]/div[@class='maincontainer']/div[@class='appcontent'][1]/table[@class='colorgrid']/tbody/tr[@class='gridItem']/td[6]/input[@class='bluebutton'] 

は、私は上記を含める場合NoSuchElementExceptionエラー。

私はセレンを初めて使っているので、私が紛失していることが明らかなことがあります。しかし、多くのグーグルの後、私は明らかな解決策を見つけていない。

また、find_element_by_name( 'manageAptm')とfind_element_by_class_name( 'bluebutton')も試してみましたが、どちらも同じエラーが出ます。

セレンでこのボタンを効果的にクリックする方法についてアドバイスできますか?

ありがとうございました!

+0

あなたが試した 'find_element_by_name'は私にとって有望です。 [wait](http://selenium-python.readthedocs.io/waits.html)と一緒に使ってみてください – har07

答えて

1

、あなたの試みとの@ har07さんのコメントに従ってfind_element_by_name('manageAptm')が動作するはずですが、要素がすぐに利用できない可能性がありますし、あなたがwait for itする必要があるかもしれません:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

wait = WebDriverWait(driver, 10) 
manageAppointment = wait.until(EC.presence_of_element_located((By.NAME, "manageAptm"))) 
manageAppointment.click() 

また、要素がAN内にあるかどうかを確認iframe。はいの場合は、そのコンテキストに切り替えて、「検索」コマンドを発行する必要があります:

driver.switch_to.frame("frame_name_or_id") 
driver.find_element_by_name('manageAptm').click() 
+0

これはまさにそれでした! iframeはありませんでしたが、遅延が必要でした。ありがとうございました!!! –