我正在尝试从公司门户网站自动下载信息。我需要指定一个自定义日期范围(在代码的其他部分(。
页面 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)
关于错误:
- 此错误消息
ElementNotVisibleException: Message: element not visible
暗示所需的元素在 HTML DOM 中不可见。 - 此错误消息
InvalidSelectorException: Message: invalid selector: Compound class names not permitted
暗示您调整的定位器策略无效。
溶液
若要对所需元素调用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