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_element(By.CLASS_NAME, name) 有效。但是,我如何從 Staples 鏈接中的產品中獲取價格?如果我沒記錯的話,這門課應該是'money-details'。
如果我嘗試列印(get_elements),我會得到 <selenium.webdriver.remote.webelement.WebElement (session="88110248d45906160075293767595b86", element="8bd5bb03-3dea-4a8d-b59e-976e6e6e16e6
我該怎么辦?
uj5u.com熱心網友回復:
請嘗試find_elements(By.CLASS_NAME,..)并查看錯誤是否仍然存在。
from selenium.webdriver.common.by import By
driver.find_elements(By.CLASS_NAME, '//button')
來源:檔案
uj5u.com熱心網友回復:
如果您使用的是 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
uj5u.com熱心網友回復:
原因是您使用的是 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)對你有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/351366.html
