Unable to locate element and TimeoutException when WebDriverWait is used

后端 未结 2 1093
无人共我
无人共我 2021-01-29 08:58

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

相关标签:
2条回答
  • 2021-01-29 09:15

    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.ui import WebDriverWait
      from selenium.webdriver.common.by import By
      from selenium.webdriver.support import expected_conditions as EC
      
    0 讨论(0)
  • 2021-01-29 09:19

    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()
    

    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.

    0 讨论(0)
提交回复
热议问题