尝试单击元素时"ElementNotVisibleException"和"InvalidSelectorException: invalid selector: Compound class nam



我正在尝试从公司门户网站自动下载信息。我需要指定一个自定义日期范围(在代码的其他部分(。

页面 html 采用以下格式

<div id="datePickerIconWrap" class="float_lang_base_2 datePickerIconWrap"><span class="datePickerIcon">&nbsp;</span></div>

我尝试通过class_nameid指定该项目;但都失败了

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

相关内容

最新更新