Selenium 在错误中按\u类\u名称查找\u元素\u
我尝试使用selenium自动单击按钮,但它给了我错误。页面的html代码为: 我正在尝试的代码是:Selenium 在错误中按\u类\u名称查找\u元素\u,selenium,selenium-webdriver,Selenium,Selenium Webdriver,我尝试使用selenium自动单击按钮,但它给了我错误。页面的html代码为: 我正在尝试的代码是: create_team=driver.find_element_by_class_name('ts-btn ts-btn-fluent ts-btn-fluent-secondary ts-btn-fluent-with-icon join-team-button') create_team.click() 我得到以下错误: 驱动程序。通过类名称()查找元素()只接受一个类名,它不是为处理多
create_team=driver.find_element_by_class_name('ts-btn ts-btn-fluent ts-btn-fluent-secondary ts-btn-fluent-with-icon join-team-button')
create_team.click()
我得到以下错误:
驱动程序。通过类名称()查找元素()
只接受一个类名,它不是为处理多个类名而构建的,引用-(),这似乎有争议
使用driver。通过css\u选择器(“ts-btn.ts-btn fluent.ts-btn fluent secondary.ts-btn fluent with icon.join team button”)查找元素。
使用driver.find_element_by_css_selector
您可以在选择器中的每个类名之间使用点(.)将多个类名链接在一起
create_team=driver.find_element_by_class_name('ts-btn.ts-btn-fluent.ts-btn-fluent-secondary ts-btn-fluent-with-icon.join-team-button')
create_team.click()
您必须用替换空间。as空格表示多个类
您还可以使用xpath或css:
create_team=driver.find_element_by_xpath("//*[@class='ts-btn.ts-btn-fluent.ts-btn-fluent-secondary ts-btn-fluent-with-icon.join-team-button]')
create_team.click()
create_team=driver.find_element_by_css_selector("[class='ts-btn.ts-btn-fluent.ts-btn-fluent-secondary ts-btn-fluent-with-icon.join-team-button]')
create_team.click()
更多问题需要回答
如果您从by_类_名称中检查异常:
你可以看到它在引擎盖下使用css_类定位器(你可以看到它自动添加到前台)
工作示例:
from selenium import webdriver
import time
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("https://stackoverflow.com/questions/65579491/find-element-by-class-name-in-selenium-giving-error/65579606?noredirect=1#comment115946541_65579606")
time.sleep(5)
elem = driver.find_element_by_class_name('overflow-x-auto.ml-auto.-secondary.grid.ai-center.list-reset.h100')
print(elem.get_attribute("outerHTML"))
要单击图元,可以使用以下任一选项:
- 使用
:css\u选择器
driver.find_element_by_css_selector("button.ts-btn.ts-btn-fluent.ts-btn-fluent-secondary.ts-btn-fluent-with-icon.join-team-button[data-tid='tg-discover-team']").click()
- 使用
:xpath
driver.find_element_by_xpath("//button[@class='ts-btn ts-btn-fluent ts-btn-fluent-secondary ts-btn-fluent-with-icon join-team-button' and @data-tid='tg-discover-team']").click()
由于所需的元素是一个元素,理想情况下,单击您需要归纳的元素,使
元素成为可点击的()
,您可以使用以下任一选项:
- 使用
:CSS\u选择器
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button.ts-btn.ts-btn-fluent.ts-btn-fluent-secondary.ts-btn-fluent-with-icon.join-team-button[data-tid='tg-discover-team']"))).click()
- 使用
:XPATH
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//button[@class='ts-btn ts-btn-fluent ts-btn-fluent-secondary ts-btn-fluent-with-icon join-team-button' and @data-tid='tg-discover-team']"))).click()
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
find\u element\u by\u class\u name()
只接受一个类名-()@PDHide我查过的每一篇文章都说,这种方法不适用于多个。(), ()