切换到帧并返回将使WebElement无效



此函数接收WebElement并使用它来定位其他元素。但是,当我切换到iframe并返回时,WebElement似乎是无效的。我得到的错误是";陈旧的元素引用:元素未附加到页面文档中;。

def map_vid(vid):
vid_name = vid.find_element(By.XPATH, "./*[1]").text
frame = driver.find_element(By.XPATH, FRAME_XPATH)
driver.switch_to.frame(frame)
quality_button = driver.find_element(By.CLASS_NAME, 'icon-cog')
quality_button.click()
driver.switch_to.default_content()
close_button = vid.find_element(By.XPATH, CLOSE_BUTTON_XPATH)
close_button.click()

重新定位WebElement不是一个选项,因为它是作为参数传递的。如有任何帮助,我们将不胜感激:(

您需要传递By定位器作为参数,而不是传递WebElement参数
由于SeleniumWebElement是对页面上物理web元素的引用,因此不能将其作为传递WebElement参数的代码
如您所见,切换到iframe或从iframe切换会导致先前找到的WebElements变为Stale
通过传递By定位器,您可以在每次需要使用方法时在方法中找到传递的父元素。类似以下内容:

def map_vid(vid_by):
vid = driver.find_element(vid_by)
vid_name = vid.find_element(By.XPATH, "./*[1]").text
frame = driver.find_element(By.XPATH, FRAME_XPATH)
driver.switch_to.frame(frame)
quality_button = driver.find_element(By.CLASS_NAME, 'icon-cog')
quality_button.click()
driver.switch_to.default_content()
vid = driver.find_element(vid_by)
close_button = vid.find_element(By.XPATH, CLOSE_BUTTON_XPATH)
close_button.click()

相关内容

  • 没有找到相关文章

最新更新