如何通过Selenium和Python在Gas Day输入框中输入日期

时间:2018-10-05 22:10:53

标签: python selenium css-selectors webdriver webdriverwait

我正在使用Python和Selenium读取以下URL: http://ips.alliance-pipeline.com/Ips/MainPage.aspx?siteId=4

我使用硒将其打开,单击加号(左侧),然后单击“每日吞吐量”。打开一个带有“ Gas Day”输入框的页面,我想在其中输入日期。 如果这些步骤是在常规chrome浏览器中手动完成的,则可以正常工作,我可以输入日期,然后点击“检索”并获取数据表。但是由于某种原因,硒使输入框为只读。我尝试删除“只读”属性(请参阅注释掉的行),在这种情况下,该属性似乎被删除了,但是仍然没有在框中输入日期,也无法检索数据。

为什么硒会使该元素变为只读,如何防止这种情况发生?

代码如下:

url = 'http://ips.alliance-pipeline.com/Ips/MainPage.aspx?siteId=4'
browser = webdriver.Chrome()
browser.get(url)
browser.find_element_by_id('treeviewn0').click() # click on "Capacity" heading
browser.find_element_by_id('treeviewt1').click() # click on "Daily Throughput" heading
time.sleep(2)
# browser.execute_script('document.getElementsByClassName("igte_EditInContainer")[0].removeAttribute("readonly")')
d = datetime.date.today() - datetime.timedelta(days=5)
d_str = d.strftime('%m/%d/%Y')
date_box = browser.find_element_by_xpath('//*[@id="MainContent_dtJobSchedForGrid"]/tbody/tr/td[1]/input')
# print(date_box.get_attribute('readonly'))
date_box.send_keys(d_str + '\n')
time.sleep(5)
browser.find_element_by_id('MainContent_btnRetrieveJobSchedForGrid').click() # click the Retrieve button
time.sleep(5)

1 个答案:

答案 0 :(得分:1)

要将日期作为字符序列发送到 Gas Day 字段,您需要诱导 WebDriverWait 所需的可点击元素,您可以使用以下解决方案:

  • 代码块:

    Country_ID
  • 浏览器快照:

date