首页 > 解决方案 > 如何通过 css 选择器为 Python selenium 中的日期字段查找元素?

问题描述

我无法让 Python 中的 Selenium 在网站上查找日期字段。我需要在此框中单击 3 次以突出显示该开始日期字段中的现有值,然后发送密钥以输入特定日期。

检查开始日期框给出:

<input type="text" mask="valDate" maxlength="10" 
size="12" id="f_2815055" value="4/1/2019" 
desc="Start Date" required="true" class="hasDatepicker">

我试过做

driver.find_element_by_css_selector(".text[id='f_2815055']").click()

但我收到错误消息:selenium.common.exceptions.NoSuchElementException: Message: Unable to find element with css selector == .text[id='f_2815055']

我也尝试过相同的方法,但是使用 class = 'hasDatePicker' 和 desc = 'Start Date',但是这些都给出了与上面相同的错误,即无法使用 css 选择器找到元素。

标签: pythonselenium

解决方案


诱导WebDriverWait和跟随Css选择器。

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

element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.hasDatepicker[desc='Start Date']")))
element.click()

已编辑

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
for i in range(0,3):
 element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.hasDatepicker[desc='Start Date']")))
 element.click()

或者

element=WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"input.hasDatepicker[desc='Start Date']")))
    driver.execute_script("arguments[0].click();",element)
    driver.execute_script("arguments[0].click();",element)
    driver.execute_script("arguments[0].click();",element)

推荐阅读