2016-04-29 42 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,但我需要延迟。谢谢!!! –

相关问题