Selenium无法定位打开日历的元素问题求助
Selenium无法定位打开日历的元素问题求助
嘿,我完全懂你现在的困扰——要定位那个点击后类名还会变的“Depart on”日期输入框,确实容易踩坑,尤其是你之前用CLASS_NAME定位没成功的情况😣
先给你说清楚为啥之前的方法行不通:By.CLASS_NAME只能接受单个类名,你传入的是一串空格分隔的类名,Selenium会把它当成一个完整的、不存在的类名去查找,自然找不到目标元素啦。
给你几个靠谱的解决方案,你可以挨个试试:
用CSS选择器组合类名定位
CSS选择器支持把多个类名用点连起来(注意不要加空格,空格是子元素的意思),刚好适配这个元素的多类名情况:from selenium.webdriver.common.by import By date_input = driver.find_element(By.CSS_SELECTOR, ".form__input.form__input--date") date_input.click()如果想更精准,还可以结合元素的
placeholder属性(如果这个输入框的placeholder是“Depart on”的话):date_input = driver.find_element(By.CSS_SELECTOR, 'input[placeholder="Depart on"]') date_input.click()搭配显式等待确保元素可点击
你之前说用了WebDriverWait没效果,大概率是定位方式不对,试试把正确的定位器和等待条件结合:from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 最多等10秒,直到元素可点击 date_input = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, ".form__input.form__input--date")) ) date_input.click()这种方式能避免页面加载慢导致的元素未就绪问题。
备选方案:用XPATH定位
如果上面的方法还是不行,试试通过“Depart on”的标签关联到输入框:date_input = driver.find_element(By.XPATH, '//label[contains(text(), "Depart on")]/following-sibling::input') date_input.click()
这些方法应该能帮你成功定位到元素并打开日历啦!
备注:内容来源于stack exchange,提问作者Audric Chalon
相关产品推荐
相关产品推荐

