What should I import for Selenium's By.XPATH?

Question:

The new version of Selenium doesn’t have any old methods, like .find_element_by_xpath(), but it introduced the new fabrique method .find_element(By.XPATH, searched_string). Here is the example from the documentation:

vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")

But it does not work, because ‘By‘ is not defined. I can’t find the example what to import to use this pattern. In Java it is:

import org.openqa.selenium.By;

And what should I do in Python?

Asked By: Vasyl Kolomiets

||

Answers:

You have to import the class By

from selenium.webdriver.common.by import By
Answered By: Fazlul
from selenium.webdriver.common.by import By 
Answered By: vitaliis

selenium.webdriver.common.by

As per the documentation of the By implementation:

class By(object):
    """
    Set of supported locator strategies.
    """

    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"

So when you use By you have to import:

from selenium.webdriver.common.by import By

Usage

  • For CLASS_NAME:

    vegetable = driver.find_element(By.CLASS_NAME, "tomatoes")
    
  • For XPATH:

    vegetable = driver.find_element(By.XPATH, "//element_xpath")
    
Answered By: undetected Selenium