如何使用Python在带有硒的日历中选择月份和年份?

问题描述

我正在尝试使日期选择器自动化,代码正在运行,退出代码为0,但是没有单击月份。

这是代码

from selenium import webdriver
from selenium.webdriver import ActionChains

driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.get("https://demoqa.com/automation-practice-form")
datefield = driver.find_element_by_id("dateOfBirthInput")
datefield.click()
months = driver.find_elements_by_css_selector("select[class*='month-select']")
for month in months:
   if month.get_attribute("value") == "June":
        time.sleep(1000)
        month.click()

解决方法

您需要使用Select来获取选择标签。

导入选择:

from selenium.webdriver.support.select import Select

获取选择示例:

select = Select(driver.find_element_by_xpath("//select[@class='react-datepicker__month-select']"))
selected_option = select.first_selected_option

更新

经过测试的有效代码:

from selenium import webdriver
from selenium.webdriver.support.select import Select
from selenium.webdriver import ActionChains

driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe")
driver.get("https://demoqa.com/automation-practice-form")
datefield = driver.find_element_by_id("dateOfBirthInput")
datefield.click()

select = Select(driver.find_element_by_xpath("//select[@class='react-datepicker__month-select']"))
selected_option = select.first_selected_option.text
print(selected_option)

使用此代码,您可以获得选定的月份。

,

我尝试过这种方式,现在可以正常工作了-

datefield = driver.find_element_by_id("dateOfBirthInput")
datefield.click()
months = driver.find_elements_by_css_selector("select[class*='month-select'] option")
for month in months:
    if month.text == "June":
        month.click()
        time.sleep(5)
        break

days = driver.find_elements_by_css_selector("div[class*='datepicker__day']")
for day in days:
    if day.text == "15":
        day.click()
        break