【问题标题】:Calendar date picker Selenium Python日历日期选择器 Selenium Python
【发布时间】:2020-12-04 01:09:08
【问题描述】:

您好,我想弄清楚如何在日历上为某些个人项目挑选日期。无法弄清楚这是如何工作的。我读了一篇关于日期选择器用作表格的帖子,我可以尝试这种方法,但我想在页面上获取未来和过去的日期选择,只有当前月份显示,所以理想情况下希望看到 onclick 功能正常工作。

chromedriver = "/usr/bin/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get('https://www.zacks.com/earnings/earnings-calendar')
driver.maximize_window()
print('page load waiting ......')
time.sleep(5)
date_field = driver.find_element_by_id('earnings_calendar_events').find_element_by_id('date_select')
date_field.click() # opens up the calendar
time.sleep(2)
print('sending key 3')
date_field.send_keys('12/1/2020') #send keys doesn't work.
time.sleep(5)

【问题讨论】:

  • 如果你可以的话我可以给java代码(你需要编写方法来从这个日历中选择日期和月份)

标签: python selenium xpath datepicker css-selectors


【解决方案1】:

要在网站https://www.zacks.com/earnings/earnings-calendar 中选择日期12/1/2020,您需要为element_to_be_clickable() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTOR

    driver.get('https://www.zacks.com/earnings/earnings-calendar')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a#date_select img"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "table.sb_minicalview td > span#dt_1"))).click()
    
  • 使用XPATH:

    driver.get('https://www.zacks.com/earnings/earnings-calendar')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@id='date_select']/img"))).click()
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//table[@class='sb_minicalview']//td/span[@id='dt_1']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:


参考

您可以在以下位置找到一些相关的详细讨论:

【讨论】:

  • 谢谢,这确实有效,但我也希望能够像 11 月一样回到上个月,并能够获取 11 月 5 日或类似的数据。使用这种方法,我只能获取当月的数据。我正在考虑进入帖子中提到的表格,但这种方法将我限制在当前月份。
  • 这听起来是一个不同的要求。你能根据你的新要求提出一个新问题吗? Stackoverflow 志愿者很乐意为您提供帮助。
  • 很高兴接受朋友的回答,但我最初的问题是我想获取过去和未来的日期,正如我在问题中所说,我绝对可以在桌子上进行遍历,但这只会给出我当月的数据。
  • 我想我可以通过单击上个月并随后遍历它来做到这一点,下个月也同样如此。
猜你喜欢
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-27
相关资源
最近更新 更多