0

I have to click on the button Accepter et continuer in this div, I copied the XPATH of the line on which is present the button I want to click, but it does not work

<div class="disclaimer-buttons-place-holder">
    <a class="btn btn-reverse" href="WEBSITE" data-event-zone="click" data-event="C" data-event-label="action::disclaimer::exit" data-event-type="A"> Refuser</a>
    <a class="btn" id="validateDisclaimer" href="/fr_part" data-event-zone="click" data-event="C" data-event-label="action::disclaimer::validate" data-event-type="A"> ccepter et continuer</a>
</div>

do you know how to click exactly on the Accepter et continuer button using XPATH?

I tried this :

driver.find_element(By.XPATH, "/html/body/div[1]/div/aside/div[2]/div/div/div[3]/div[2]/a[2]").click() 

Thank you so much!

Ajeet Verma
  • 2,938
  • 3
  • 13
  • 24

1 Answers1

0

Given the html:

<div class="disclaimer-buttons-place-holder">
    <a class="btn btn-reverse" href="WEBSITE" data-event-zone="click" data-event="C" data-event-label="action::disclaimer::exit" data-event-type="A"> Refuser</a>
    <a class="btn" id="validateDisclaimer" href="/fr_part" data-event-zone="click" data-event="C" data-event-label="action::disclaimer::validate" data-event-type="A"> ccepter et continuer</a>
</div>

The desired element is a dynamic element.


Solution

To click on the clickable element you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following locator strategies:

  • Using PARTIAL_LINK_TEXT:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "ccepter et continuer"))).click()
    
  • Using CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.btn#validateDisclaimer[data-event-label$='validate']"))).click()
    
  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='btn' and @id='validateDisclaimer'][contains(@data-event-label, 'validate') and contains(., 'ccepter et continuer')]"))).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
    
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352