【问题标题】:selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permittedselenium.common.exceptions.InvalidSelectorException:消息:无效选择器:不允许复合类名
【发布时间】:2021-03-09 09:23:32
【问题描述】:

我的代码:

from selenium import webdriver
driver = webdriver.Opera(executable_path=r'C:\Users\lolo\Desktop\operadriver_win64\operadriver.exe')
driver.get('https://2whois.ru/?t=dns&data=')
find = driver.find_element_by_class_name('btn-u btn-u-green').text
print(find)

错误:

Traceback (most recent call last):
  File "C:\Users\lolo\PycharmProjects\FindWord\FindWord.py", line 5, in <module>
    find = driver.find_element_by_class_name('btn-u btn-u-green').text
  File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 564, in find_element_by_class_name
    return self.find_element(by=By.CLASS_NAME, value=name)
  File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 976, in find_element
    return self.execute(Command.FIND_ELEMENT, {
  File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\lolo\PycharmProjects\FindWord\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permitted
  (Session info: chrome=88.0.4324.182)
  (Driver info: operadriver=88.0.4324.104 (17905c015d3376dee9cce5dd079a3f4fa906e060-refs/branch-heads/4324_96@{#3}),platform=Windows NT 10.0.19041 x86_64)

我想知道这个错误只有在我通过类名解析元素时才会出现。如果我通过 id 找到元素:

find = driver.find_element_by_id()

那么没有错误 我已经更新了硒

这很奇怪,请帮忙

【问题讨论】:

标签: python html python-3.x selenium selenium-webdriver


【解决方案1】:

find_element_by_class_name() 只接受单个类,您可以传递单个类名或改用css selector

find = driver.find_element_by_class_name('btn-u-green').text
print(find)

find = driver.find_element_by_css_selector('.btn-u.btn-u-green').text
print(find)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 2019-06-17
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2015-04-15
    • 2017-04-22
    • 2020-11-04
    相关资源
    最近更新 更多