Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Python Selenium – Find Element not working for a button

Can anyone assist in clicking a button on a website using Selenium? On the main landing page, I want to click the "Confirm" button. I get an no such element: Unable to locate element: error. Please see my code below:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
  
driver = webdriver.Chrome(r"./driver/chromedriver")
  
driver.get("https://www.xe.com/currencytables/")
  
driver.maximize_window()
time.sleep(10)
  
login_button = driver.find_element(By.CLASS_NAME, "button__BaseButton-sc-1qpsalo-0 clGTKJ")
button.click()

>Solution :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

  1. button__BaseButton-sc-1qpsalo-0 clGTKJ are 2 class name values. To use multiple class name values you can use CSS_SELECTOR or XPATH but not CLASS_NAME because this method receives single class name value.
  2. button__BaseButton-sc-1qpsalo-0 clGTKJ class names appearing in 3 elements on that page. I guess you wanted to click a confirm button, if so another selector can be used, as following.
  3. You should not use hardcoded sleeps like time.sleep(10). WebDriverWait expected_conditions explicit waits should be used instead.

The following code works:

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(service=webdriver_service, options=options)

wait = WebDriverWait(driver, 5)
actions = ActionChains(driver)

url = "https://www.xe.com/currencytables/"
driver.get(url)

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "button[type='submit']"))).click()

The result is

enter image description here

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading