使用 Selenium (Python) 时出错:无法在 HTML 源代码中找到 class
Error using Selenium (Python): Unable to find class in HTML source code
我正在学习如何使用 Selenium。我正在做一些测试,但出现了这个错误:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .layout layout-base
我的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.common.by import By
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("https://page.onstove.com/epicseven/global/list/e7en003?listType=2&direction=latest&page=1")
driver.find_element(By.CLASS_NAME,"layout layout-base")
我试图使用 find_element
.
找到的源代码
我做错了什么?
你不能通过 find_element(By.CLASS_NAME,"classname")
传递多个类名作为参数,这样做你将面临错误:
invalid selector: Compound class names not permitted
解决方案
作为替代方案,您可以使用以下任一方法 :
使用CLASS_NAME layout
:
driver.find_element(By.CLASS_NAME, "layout")
使用CLASS_NAME layout
:
driver.find_element(By.CLASS_NAME, "layout-base")
使用CSS_SELECTOR:
driver.find_element(By.CSS_SELECTOR, ".layout.layout-base")
使用 XPATH:
driver.find_element(By.XPATH, "//*[@class='layout layout-base']")
layout layout-base
是两个 class 名称值,由 space.
分隔
要定位此元素,您可以使用以下任何一种方式:
driver.find_element(By.CLASS_NAME,"layout.layout-base")
或者
driver.find_element(By.CSS_SELECTOR,"div.layout.layout-base")
或者
driver.find_element(By.XPATH,"//div[@class='layout layout-base']")
我正在学习如何使用 Selenium。我正在做一些测试,但出现了这个错误:
selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: .layout layout-base
我的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdriver_manager.firefox import GeckoDriverManager
from selenium.webdriver.common.by import By
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
driver.get("https://page.onstove.com/epicseven/global/list/e7en003?listType=2&direction=latest&page=1")
driver.find_element(By.CLASS_NAME,"layout layout-base")
find_element
.
我做错了什么?
你不能通过 find_element(By.CLASS_NAME,"classname")
传递多个类名作为参数,这样做你将面临错误:
invalid selector: Compound class names not permitted
解决方案
作为替代方案,您可以使用以下任一方法
使用CLASS_NAME
layout
:driver.find_element(By.CLASS_NAME, "layout")
使用CLASS_NAME
layout
:driver.find_element(By.CLASS_NAME, "layout-base")
使用CSS_SELECTOR:
driver.find_element(By.CSS_SELECTOR, ".layout.layout-base")
使用 XPATH:
driver.find_element(By.XPATH, "//*[@class='layout layout-base']")
layout layout-base
是两个 class 名称值,由 space.
分隔
要定位此元素,您可以使用以下任何一种方式:
driver.find_element(By.CLASS_NAME,"layout.layout-base")
或者
driver.find_element(By.CSS_SELECTOR,"div.layout.layout-base")
或者
driver.find_element(By.XPATH,"//div[@class='layout layout-base']")