单击按钮后,Python Selenium元素不会附加到页面文档中



当我点击下拉列表中的一个项目时,该项目被正确点击,但错误是:"陈旧元素没有附加到页面文档";被提起。

我想这个错误是因为我在DOM中使用的一个元素发生了更改或已经刷新,但我目前没有找到任何解决方案。这是我的代码:

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, 'class=" css-b02ejv-menu"'))
select_question_type = self.driver.find_elements(By.CSS_SELECTOR, 'class="CustomOptionMenu_button__2GnMd"')
for type in select_question_type:
if type.text == "QCM grid":
try:
ActionChains(self.driver).click(type).perform()
except StaleElementReferenceException:
pass

我做错了什么?

由于单击下拉列表中的元素,页面会发生变化,并且元素会被刷新,因此刷新后必须再次获取select_question_type元素。类似这样的东西:

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, 'class=" css-b02ejv-menu"'))
select_question_type = self.driver.find_elements(By.CSS_SELECTOR, 'class="CustomOptionMenu_button__2GnMd"')
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, 'class=" css-b02ejv-menu"'))
select_question_type = self.driver.find_elements(By.CSS_SELECTOR, 'class="CustomOptionMenu_button__2GnMd"')

此外,我已经将元素名称从type更改为type_el,因为type是一个不应用于变量命名的关键字。

最新更新