2016-04-29 76 views
1

我想創建一個Python程序,定期檢查網站的特定更新。該網站是安全的,需要多次點擊才能進入我想要監控的頁面。不幸的是,我試圖弄清楚如何點擊一個特定的按鈕。下面是按鈕的代碼:如何使用Selenium和Python 2.7單擊表單中的按鈕?

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

我已經試過許多方法來訪問按鈕,總是得到「selenium.common.exceptions.NoSuchElementException:」錯誤。以訪問按鈕的顯而易見的方法是XPath和使用Chrome的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'] 

如果我包括上述如下:

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() 

我仍然得到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() 

此外,檢查元素是內部的iframe或不是。如果是的話,你需要切換到它的上下文,然後發出「查找」命令:

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

這就是它!沒有iframe,但我需要延遲。謝謝!!! –

相關問題