首页 > 解决方案 > 处理帧时的 Slate 元素引用异常

问题描述

from selenium import webdriver

driver = webdriver.Chrome(executable_path=r'C:\Users\satyanarayana\Downloads\chromedriver_win32\chromedriver.exe')
driver.get("https://www.olx.in/")

frames_tag = driver.find_elements_by_tag_name("iframe")
print(len(frames_tag))
for i in range(0,len(frames_tag)):
    driver.switch_to.frame(frames_tag[i])

driver.quit()

我收到以下异常。有人可以帮我弄清楚代码有什么问题。

Traceback (most recent call last):
  File "C:/Users/satyanarayana/PycharmProjects/untitled1/Ad.py", line 11, in <module>
    driver.switch_to.frame(frames_tag[i])
  File "C:\Users\satyanarayana\PycharmProjects\untitled1\venv\lib\site-packages\selenium\webdriver\remote\switch_to.py", line 89, in frame
    self._driver.execute(Command.SWITCH_TO_FRAME, {'id': frame_reference})
  File "C:\Users\satyanarayana\PycharmProjects\untitled1\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "C:\Users\satyanarayana\PycharmProjects\untitled1\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=70.0.3538.77)
  (Driver info: chromedriver=2.43.600210 (68dcf5eebde37173d4027fa8635e332711d2874a),platform=Windows NT 10.0.17134 x86_64)

标签: pythonseleniumselenium-webdriver

解决方案


当您切换到<iframe>驱动程序上下文更改为<iframe>并且只能识别其中的元素。<iframe>完成后需要退出

for i in range(0,len(frames_tag)):
    driver.switch_to.frame(frames_tag[i])
    driver.switch_to.default_content()

推荐阅读