使用 Selenium/Python 在 Datepicker 中更改日期
Change date in Datepicker with Selenium/Python
我正在尝试使用 Python/Selenium 访问和更改以下网站上的日期:
尝试点击日历时出现以下错误:
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
输出:
我正在尝试使用 Python/Selenium 访问和更改以下网站上的日期:
尝试点击日历时出现以下错误:
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
输出: