Skip to content Skip to sidebar Skip to footer

Unable To Locate Element And Timeoutexception When Webdriverwait Is Used

I'm trying to automate the clicking of the 'SHOW MORE' button at the bottom of the page to get all the reviews there is. However, I'm having some problems locating it and would re

Solution 1:

Your yDmH0d, fcxH9b, etc. seems to be dynamically generated and change each time you load/reload the page. The only thing which doesn't change is span tag text.

So I would recommend using the following simple selector:

WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.XPATH, "//span[text()='Show more']"))).click()

enter image description here

Also consider using Page Object Model design pattern, it will make your life easier when it comes to test support when/where UI changes and lets you write tests much faster.

See Page Objects page of Selenium Python documentation for more information if needed.

Solution 2:

As the element is JavaScript enabled element so to click() it you need to induce WebDriverWait for the element_to_be_clickable() and you can use the following Locator Strategy:

  • Using XPATH:

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

    from selenium.webdriver.support.uiimportWebDriverWaitfrom selenium.webdriver.common.byimportByfrom selenium.webdriver.supportimport expected_conditions asEC

Post a Comment for "Unable To Locate Element And Timeoutexception When Webdriverwait Is Used"