[英]Python/Selenium - find_elements_by_class_name with long class name
[英]How to get find_elements_by_class_name to work in Python Selenium?
from bs4 import BeautifulSoup
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
url = "https://www.staples.ca/products/959340-en-dr-pepper-355-ml-cans-12-pack"
s=Service('C:/Users/teddy/OneDrive/Desktop/chromedriver.exe')
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
options.add_argument('--incognito')
options.add_argument('--headless')
driver = webdriver.Chrome(service=s)
driver.get(url)
get_elements = driver.find_elements_by_class_name()
我的 Python IDE (Pycharm) 显示 find_elements_by_class_name 像驱动程序一样被划掉。 find_elements_by_class_name 。 我认为这是因为它已被弃用,但这是我输入 driver.find 时它给我的唯一建议...
希望有人能够帮助我。
谢谢
请尝试使用find_elements(By.CLASS_NAME,..)
并查看错误是否仍然存在。
from selenium.webdriver.common.by import By
driver.find_elements(By.CLASS_NAME, '//button')
来源: 文档
如果您使用的是 Selenium V3.0 系列,它同时支持
get_elements = driver.find_elements_by_class_name()
或等价物
get_elements = driver.find_elements(By.CLASS_NAME, "")
两者都应该工作。
此外,不完全确定您为什么面临这个问题。 请说明您的 Selenium、Python、驱动程序版本等。
使固定 :
您可以尝试,显式等待有这样的列表:
get_elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "")))
进口:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
原因是您使用的是 Selenium 4。如果您查看源代码,您将在find_element_by_class_name
(或任何其他find_element_by_*
方法)下看到弃用警告
warnings.warn(
"find_element_by_* commands are deprecated. Please use find_element() instead",
DeprecationWarning,
stacklevel=2,
)
我不知道为什么 PyCharm 没有建议它,但是find_element(by=By.CLASS_NAME, value=name)
对你find_element(by=By.CLASS_NAME, value=name)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.