Selenium AttributeError:“WebDriver”对象没有属性“find_element_by_css_selector”

m. *_*ekk 15 python selenium selenium-webdriver

我正在关注这个LinkedIn 职位数据抓取工具的构建。

这是我的代码:

from selenium import webdriver
import time
import pandas as pd

url = 'https://www.linkedin.com/jobs/search?keywords=&location=San%20Francisco%2C%20California%2C%20United%20States&locationId=&geoId=102277331&f_TPR=&distance=100&position=1&pageNum=0'

wd = webdriver.Chrome(executable_path=r'/Users/voi/chromedriver')
wd.get(url)

no_of_jobs = int(wd.driver.find_element_by_css_selector('h1>span').get_attribute('innerText'))
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个,并尝试了解决方案,但收到了类似的错误,除了关于没有驱动程序属性的 WebDriver 对象。

这是完整的错误消息:

cd /Users/voi ; /usr/bin/env /usr/local/bin/python3 /Users/voi/.vscode/extensions/ms-python.python-2
022.8.1/pythonFiles/lib/python/debugpy/launcher 59402 -- /Users/voi/jobscrape.py 
/Users/voi/jobscrape.py:7: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
  wd = webdriver.Chrome(executable_path=r'/Users/voi/chromedriver')
Traceback (most recent call last):
  File "/Users/voi/jobscrape.py", line 10, in <module>
    no_of_jobs = int(wd.find_element_by_css_selector('h1>span').get_attribute('innerText'))
AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector'
Run Code Online (Sandbox Code Playgroud)

m. *_*ekk 34

好吧,我回答了我自己的问题。各个方法 find_element_by_* 已被 find_element 取代,例如

no_of_jobs = int(wd.find_element(By.CSS_SELECTOR, 'h1>span'))
Run Code Online (Sandbox Code Playgroud)

更多信息在这里


Pik*_*er2 28

Selenium 最近删除了16 个已弃用的find_element(s)_by_x函数,转而采用将“by”部分作为第一个参数的Generalfind_element和函数。find_elements

要更新代码,您可以使用 IDE 的查找并替换全部功能来替换这 16 个搜索词:

.find_element_by_class_name(
.find_element(By.CLASS_NAME, 

.find_element_by_css_selector(
.find_element(By.CSS_SELECTOR, 

.find_element_by_id(
.find_element(By.ID, 

.find_element_by_link_text(
.find_element(By.LINK_TEXT, 

.find_element_by_name(
.find_element(By.NAME, 

.find_element_by_partial_link_text(
.find_element(By.PARTIAL_LINK_TEXT, 

.find_element_by_tag_name(
.find_element(By.TAG_NAME, 

.find_element_by_xpath(
.find_element(By.XPATH, 

.find_elements_by_class_name(
.find_elements(By.CLASS_NAME, 

.find_elements_by_css_selector(
.find_elements(By.CSS_SELECTOR, 

.find_elements_by_id(
.find_elements(By.ID, 

.find_elements_by_link_text(
.find_elements(By.LINK_TEXT, 

.find_elements_by_name(
.find_elements(By.NAME, 

.find_elements_by_partial_link_text(
.find_elements(By.PARTIAL_LINK_TEXT, 

.find_elements_by_tag_name(
.find_elements(By.TAG_NAME, 

.find_elements_by_xpath(
.find_elements(By.XPATH, 
Run Code Online (Sandbox Code Playgroud)

By如果您还没有这样做,您还需要导入:

from selenium.webdriver.common.by import By
Run Code Online (Sandbox Code Playgroud)