问题描述
我正在尝试使日期选择器自动化,代码正在运行,退出代码为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