我无法让Selenium使用Python在网站上找到日期字段。我需要它在此框中单击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:消息:无法使用css选择器==来查找元素。text[id ='f_2815055']
我也尝试了相同的方法,但是使用class ='hasDatePicker'和desc ='Start Date',但是这些方法都出现了与上述相同的错误,无法使用CSS选择器找到元素。
答案 0 :(得分:1)
诱发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()
OR
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)
答案 1 :(得分:0)
也许使用find_element_by_id
,因为该元素具有可用于定位它的ID:
driver.find_element_by_id('f_2815055').click()