我正在尝试自动从公司的Web门户下载信息。我需要指定一个自定义日期范围(在代码的其他部分)。
页面html的格式如下
<div id="datePickerIconWrap" class="float_lang_base_2 datePickerIconWrap"><span class="datePickerIcon"> </span></div>
我尝试用class_name
和id
指定项目;但都失败了
import os
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
url = '<my url>'
driver = webdriver.Chrome("Y:/Users/admin/Documents/chromedriver.exe")
driver.get(url)
driver.find_element_by_id('datePickerIconWrap').click()
driver.find_element_by_class_name('float_lang_base_2 datePickerIconWrap').click()
我收到以下有关.find_element_by_id的错误消息
ElementNotVisibleException: Message: element not visible
我收到以下有关.find_element_by_class的错误消息
InvalidSelectorException: Message: invalid selector: Compound class names not permitted
(Session info: chrome=68.0.3440.106)
答案 0 :(得分:0)
关于错误:
ElementNotVisibleException: Message: element not visible
表示所需的元素在HTML DOM中不可见。InvalidSelectorException: Message: invalid selector: Compound class names not permitted
表示您改编的Locator Strategy无效。要在所需元素上调用click()
,可以使用以下任一解决方案:
CSS_SELECTOR
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.float_lang_base_2.datePickerIconWrap>span.datePickerIcon"))).click()
XPATH
:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='float_lang_base_2 datePickerIconWrap']/span[@class='datePickerIcon']"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC