'No module named 'selenium.webdriver.common.by'' Error in Selenium Python

Question:

I’m getting this output in Sublime Text when trying to run this code:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
PATH = "C:/Users/josh.bailey/Documents/chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get ("https://vehicleenquiry.service.gov.uk/")
time.sleep(5)
search = driver.find_element_by_id("wizard_vehicle_enquiry_capture_vrn_vrn")
search.send_keys("*REDACTED*")
search.send_keys(Keys.RETURN)
time.sleep(5)
main = driver.find_element_by_class("reg-mark-sm")
print(main.text)
driver.quit()

This is pretty basic code, I’m just trying something out to make a business process a lot easier when inputting vehicle details into our database. The code isn’t finished yet, but I’m only stuck because of this error printout:

Traceback (most recent call last):

  File "C:Usersjosh.baileyDocumentsTest3.py", line 2, in <module>
    from selenium import webdriver

  File "C:Usersjosh.baileyAppDataRoamingPythonPython38site- 
    packagesseleniumwebdriver__init__.py", line 18, in <module>
    from .firefox.webdriver import WebDriver as Firefox  # noqa

  File "C:Usersjosh.baileyAppDataRoamingPythonPython38site- 
    packagesseleniumwebdriverfirefoxwebdriver.py", line 27, in 
    <module>
    from selenium.webdriver.remote.webdriver import WebDriver as 
    RemoteWebDriver
  
  File "C:Usersjosh.baileyAppDataRoamingPythonPython38site- 
    packagesseleniumwebdriverremotewebdriver.py", line 41, in 
    <module>
    from .shadowroot import ShadowRoot

  File "C:Usersjosh.baileyAppDataRoamingPythonPython38site- 
    packagesseleniumwebdriverremoteshadowroot.py", line 21, in 
    <module>
    from ..common.by import By

ModuleNotFoundError: No module named 'selenium.webdriver.common.by'
[Finished in 195ms]

There’s definitely a by.py file in seleniumwebdrivercommon directory, just as there is a keys.py file. I’ve opened the by.py file and it appears to have all the content inside it should have. is there something I’m doing wrong? Any help would be appreciated. Thanks!

Asked By: Joshua bailey

||

Answers:

Hi Please correct the line it is "find_element_by_class_name"

main = driver.find_element_by_class("reg-mark-sm")

to 

main = driver.find_element_by_class_name("reg-mark-sm")

here is the complete code

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

PATH = "C:/Users/josh.bailey/Documents/chromedriver.exe"
driver = webdriver.Chrome(PATH)
driver.get ("https://vehicleenquiry.service.gov.uk/")
time.sleep(5)
search = driver.find_element_by_id("wizard_vehicle_enquiry_capture_vrn_vrn")
search.send_keys("*REDACTED*")
search.send_keys(Keys.RETURN)
time.sleep(5)
main = driver.find_element_by_class_name("reg-mark-sm")
print(main.text)
driver.quit()
Answered By: Learner

To resolve No module named ‘selenium.webdriver.common.by’, you can try you installing the webdriver-manager module.

# ↓ Python 2
pip install webdriver-manager

# ↓ Python 3
pip3 install webdriver-manager

Sample usage of the module: selenium.webdriver.common.by

from selenium import webdriver
from selenium.webdriver.common.by import by
...
element = driver.find_element(By.ID, 'foo')
elements = driver.find_elements(By.CLASS_NAME, 'foo')
Answered By: antane