【问题标题】:How can I fill web forms that use a drop down calendar for picking dates with Python?如何使用 Python 填写使用下拉日历选择日期的 Web 表单?
【发布时间】:2017-07-01 08:05:14
【问题描述】:

现在我正在尝试填写this 表单。

我正在使用 selenium 来选择这个带有下拉日历的输入框。 当我检查输入框时,我得到:

当我尝试通过以下方法之一选择它时:

form_element = browser.find_element_by_name('date')
form_element = browser.find_element_by_xpath("//input[@name='date']")
form_element = browser.find_element_by_xpath("//input[@type='date']")

我收到以下“无法找到元素:”消息之一的错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: 
Unable to locate element: {"method":"name","selector":"date"}
Unable to locate element: "method":"xpath","selector":"//input[@name='date']"}
{"method":"name","selector":"date"}

我做错了什么?还有其他我应该选择的东西还是有其他方法可以做到这一点?硒甚至可能吗?如果没有,我还能如何填写这些表格?

【问题讨论】:

标签: python selenium


【解决方案1】:

与表单交互的基本思想是选择表单元素(按id,按名称,按类),激活编辑模式(通过模拟单击或返回键),在其中写入,然后移动到下一个元素。

文档: http://selenium-python.readthedocs.io/locating-elements.html

特别是要编辑日期字段,选择它,激活编辑,然后逐一编译日期组件(日、月、年)。

date= driver.find_element_by_name("date")
date.send_keys(Keys.RETURN)
date.send_keys("10")
date.send_keys("10")
date.send_keys("2016")

对于您的特定网页,这里是所有工作代码。

driver = webdriver.Chrome()
driver.get("http://frontop.ca/rtm/eglintongis/dataenterpage.html?pj=MD")

date= driver.find_element_by_name("date")
date.send_keys(Keys.RETURN)
date.send_keys("10")
date.send_keys("10")
date.send_keys("2016")

time= driver.find_element_by_name("time")
time.send_keys(Keys.RETURN)
time.send_keys("15:00")
time.send_keys(Keys.RETURN)

temperature= driver.find_element_by_name("temp")
temperature.send_keys(Keys.RETURN)
temperature.send_keys("5")

operator= driver.find_element_by_name("oper")
operator.send_keys("BlaBLABLA")

select= driver.find_element_by_name("itemslt")
select.click()

date= driver.find_element_by_name("reading")
date.send_keys(Keys.RETURN)
date.send_keys("BlaBLABLA")

submit= driver.find_element_by_name("sltdate")
submit.click()

【讨论】:

  • 谢谢 aberna,你很有帮助!现在,事实证明我没有正确描述我的问题,因为问题实际上是在弄清楚如何访问 iframe。除非我给你我的用户名和登录信息,否则我无法分享我试图自动化的实际网页,所以我给的链接是 iframe 的来源。但是您的回答非常有用且很有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-19
  • 2023-02-02
  • 1970-01-01
  • 1970-01-01
  • 2023-03-02
  • 2011-01-16
  • 2017-09-11
相关资源
最近更新 更多