使用 Selenium/Python 在 Datepicker 中更改日期

Change date in Datepicker with Selenium/Python

我正在尝试使用 Python/Selenium 访问和更改以下网站上的日期:

http://www.b3.com.br/en_us/market-data-and-indices/data-services/market-data/historical-data/derivatives/trading-session-settlements/

尝试点击日历时出现以下错误: selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: /html/body/div[1]/div[1]/div/form/div/div[1]

我想我需要激活一些 js 代码,但我无法找到特定的 js 代码。有人对我如何激活网页上的内容有任何建议吗?

我试过使用以下代码:

driver.get('http://www.b3.com.br/en_us/market-data-and-indices/data-services/market-data/historical-data/derivatives/trading-session-settlements/')
time.sleep(5)
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/form/div').click()
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/form/div/div[1]').click()
driver.find_element_by_xpath('//*[@id="dData1"]').click()
driver.find_element_by_xpath('//*[@id="dData1"]').clear()
driver.find_element_by_xpath('//*[@id="dData1"]').send_keys('04/08/2020')

我知道代码在第 2 行已经失败,但我不明白为什么我在网页上使用 selenium 时像往常一样复制 Xpath。

在此先感谢您的帮助!

iframe 出现在您的网页上,请在执行发送键之前切换它的控件。请参考以下解决方案:

driver.maximize_window()
wait = WebDriverWait(driver, 10)
driver.get("http://www.b3.com.br/en_us/market-data-and-indices/data-services/market-data/historical-data/derivatives/trading-session-settlements/")
# driver.find_element_by_tag_name('body').send_keys("Keys.ESCAPE")
iframe=driver.find_element_by_id("bvmf_iframe")
driver.switch_to.frame(iframe)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input#dData1.datepicker.hasdatepicker"))).clear()
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "input#dData1.datepicker.hasdatepicker"))).send_keys('02/01/2021')

注意:将以下导入添加到您的解决方案中:

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

输出: