我正在尝试创建一个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有效点击此按钮吗?
谢谢!
答案 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()