Home > Software design >  Python Selenium - element is not attached to the page document - once button is clicked
Python Selenium - element is not attached to the page document - once button is clicked

Time:10-20

When I click on an item inside a dropdown list, the item is correctly clicked but the error: "stale element is not attached to the page document" is raised.

I guess this error is raised because of an element I use as changed inside the DOM or has been refreshed, but I didn't find any solutions for now. Here's my code:

exam_question_type = self.driver.find_element(By.XPATH, f"//*[name()='svg'][@class='css-19bqh2r']")
exam_question_type.click()
WebDriverWait(self.driver).until(ec.visibility_of_element_located((By.CSS_SELECTOR, ''))
select_question_type = self.driver.find_elements(By.CSS_SELECTOR, '')
for type in select_question_type:
    if type.text == "QCM grid":
        try:
            ActionChains(self.driver).click(type).perform()
        except StaleElementReferenceException:
            pass

What i'm doing wrong?

CodePudding user response:

Since by clicking on elements inside the dropdown list the page is changing and elements are refreshed you have to grab select_question_type elements again after the refreshing. Something like this:

exam_question_type = self.driver.find_element(By.XPATH, f"//*[name()='svg'][@class='css-19bqh2r']")
exam_question_type.click()
WebDriverWait(self.driver).until(ec.visibility_of_element_located((By.CSS_SELECTOR, ''))
select_question_type = self.driver.find_elements(By.CSS_SELECTOR, '')
for index, type_el in enumerate(select_question_type):
    type_el = select_question_type[index]
    if type_el.text == "QCM grid":
        ActionChains(self.driver).click(type_el).perform()
        WebDriverWait(self.driver).until(ec.visibility_of_element_located((By.CSS_SELECTOR, ''))
        select_question_type = self.driver.find_elements(By.CSS_SELECTOR, '')

Also, I've changed the element name from type to type_el since type is a keyword that should not be used for naming of variables.

  • Related