Search code examples
pythonseleniumselenium-webdrivercss-selectorswebdriverwait

Try to click on "a" button using selenium but It navigates to the "href" URL instead of showing pop-up


I have a python script. When it tries to click on "https://www.etsy.com/" site language change button using selenium It navigates to "href" URL. but I want it to show the pop-up.

Image

This is how the code look like

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager


driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get("https://www.etsy.com/")
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.CSS_SELECTOR,'a[id=locale-picker-trigger]'))).click()
driver.close()

What is the issue here?


Solution

  • Use element_to_be_clickable() instead, and js executor to click.

    driver.get("https://www.etsy.com/")
    lang=WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'a[id=locale-picker-trigger]')))
    driver.execute_script("arguments[0].click();", lang)
    

    Update

    driver.get("https://www.etsy.com/")
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH,"//button[contains(., 'Accept')]"))).click()
    lang=WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR,'a[id=locale-picker-trigger]')))
    driver.execute_script("arguments[0].click();", lang)
    

    browser snapshot

    enter image description here