如何使用Selenium和Python 2.7单击表单中的按钮?

时间:2016-04-29 02:03:56

标签: python python-2.7 selenium xpath selenium-webdriver

我正在尝试创建一个Python程序,定期检查网站的特定更新。该网站是安全的,需要多次点击才能访问我想要监控的页面。不幸的是,我不知道如何找出如何点击特定按钮。这是按钮代码:

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

我尝试过多种方法来访问按钮,并始终获得&#34; selenium.common.exceptions.NoSuchElementException:&#34;错误。访问按钮的明显方法是使用XPath并使用Chrome X-Path Helper工具,我得到以下信息:

/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(&#39; manageAptm&#39;)和find_element_by_class_name(&#39; bluebutton&#39;),两者都给出了同样的错误。

有人可以建议如何使用Selenium有效点击此按钮吗?

谢谢!

1 个答案:

答案 0 :(得分: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内。如果是,您需要切换到它的上下文,然后才发出&#34; find&#34;命令:

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