gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:57:58 24 4
gpt4 key购买 nike

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

我使用 selenium 打开它,单击加号(左侧),然后单击“每日吞吐量”。打开一个页面,其中包含“Gas Day”输入框,我想在其中输入日期。如果这些步骤是在常规 Chrome 浏览器中手动完成的,则效果很好,我可以输入日期并单击“检索”并获取数据表。但由于某种原因,selenium 使输入框变为只读。我尝试删除“只读”属性(请参阅注释掉的行),在这种情况下,该属性似乎已被删除,但日期仍未输入框中,并且未检索数据。

为什么 selenium 使该元素只读以及如何防止这种情况发生?

这是代码:

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)

最佳答案

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

  • 代码块:

    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC

    options = webdriver.ChromeOptions()
    options.add_argument("start-maximized")
    options.add_argument('disable-infobars')
    browser = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
    browser.get("http://ips.alliance-pipeline.com/Ips/MainPage.aspx?siteId=4")
    browser.find_element_by_id('treeviewn0').click() # click on "Capacity" heading
    browser.find_element_by_id('treeviewt1').click() # click on "Daily Throughput" heading
    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input.igte_EditInContainer"))).send_keys("10/04/2018")
  • 浏览器快照:

date

关于python - 如何通过 Selenium 和 Python 在 Gas Day 输入框中输入日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52673842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com