Home > Net >  Buttons click with selenium webdriver not work/not found
Buttons click with selenium webdriver not work/not found

Time:03-23

Actually, i have a script with python 3.10, selenium, undetected-chromedriver and i want to click on two buttons on this webpage:

enter image description here

And html code for these two buttons are here:

-first highlighted is flag fr

-second is country ".fr"

enter image description here

I've tested somes part of script, but not work actually:

For language flag fr:

driver.find_element(By.XPATH, "(//span[@id='lang_fr'])").click()
driver.find_element(By.ID,"lang_fr").click()

For country .fr:

driver.find_element(By.XPATH, "(//span[@setting='4'])").click()
driver.find_element(By.XPATH, "(.//span[contains(text(), '.fr')])").click()

I have somes errors on results, "element not found", or this:

selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable

Anyone can help me or have an idea where is the problem please?

Thanks for help, bye!

CodePudding user response:

You have to click on default flag first and then there will be 2 button which you can click like below:

Code:

driver_path = r'C:\\Users\\****\\***\\Desktop\\Automation\\chromedriver.exe'

driver = webdriver.Chrome(driver_path)

driver.maximize_window()


driver.get("https://keepa.com/#!")
wait = WebDriverWait(driver, 30)

wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div#currentLanguage .languageMenuText"))).click()

flag = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "img#lang_fr")))
flag.click()

lang = wait.until(EC.visibility_of_element_located((By.XPATH, "//span[text()='.fr']")))
lang.click()

Imports:

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

CodePudding user response:

You can try the below code it will help you (this is using java though, ).

Actions actions = new Actions(driver);
WebElement ctr;
ctr= driver.findElement(By.xpath("//*[contains(text(),'YOUR DESIRED TEXT')]"));
Thread.sleep(1000);
actions.click(spatial).perform();
  • Related