Python Selenium throws error AttributeError: ‘WebDriver’ object has no attribute ‘find_element_by_css_selector’ when you try to use deprecated function find_element_by_css_selector
. It is replaced by find_element(By.CSS_SELECTOR, element)
.
Code Example –
This code will throw error –
from selenium import webdriver import time import pandas as pd url = 'https://akashmittal.com/' wd = webdriver.Chrome(executable_path=r'/Users/akash/chromedriver') wd.get(url) no_of_icons = int(wd.driver.find_element_by_css_selector('p>span').get_attribute('innerText'))
If you run this code, the output will be –
Traceback (most recent call last): File "/Users/akash/jobscrape.py", line 10, in <module> no_of_icons = int(wd.find_element_by_css_selector('p>span').get_attribute('innerText')) AttributeError: 'WebDriver' object has no attribute 'find_element_by_css_selector'
Solution –
To resolve this error use find_element(By.CSS_SELECTOR, 'p>span')
–
from selenium import webdriver import time import pandas as pd url = 'https://akashmittal.com/' wd = webdriver.Chrome(executable_path=r'/Users/akash/chromedriver') wd.get(url) no_of_icons = int(wd.find_element(By.CSS_SELECTOR, 'p>span'))
According to Selenium docs, all functions find_element_by
_* are replace by these –
find_element(By.ID, "id") find_element(By.NAME, "name") find_element(By.XPATH, "xpath") find_element(By.LINK_TEXT, "link text") find_element(By.PARTIAL_LINK_TEXT, "partial link text") find_element(By.TAG_NAME, "tag name") find_element(By.CLASS_NAME, "class name") find_element(By.CSS_SELECTOR, "css selector")