How to click on button with text Show more results using Selenium and Python?

Question:

For this button:
enter image description here

I used these pieces of code, but it did not work.

WebDriverWait(wd, 1).until(EC.element_to_be_clickable((By.XPATH, "//input[contains(., 'Show more results')]"))).click()

and

button = wd.find_elements_by_xpath("//*[contains(text(), 'My Button')]")
button.click()
Asked By: Fateme Nazari

||

Answers:

You were almost there. Show more results isn’t the innerText but the value of the value attribute.


Solution

To click on the element with text as Show more results you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following locator strategies:

  • Using CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[value='Show more results']"))).click()
    
  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@value='Show more results']"))).click()
    
  • Note: You have to add the following imports :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
Answered By: undetected Selenium