【问题标题】:Selenium: NoSuchFrameException for Chrome ExtensionSelenium:Chrome 扩展的 NoSuchFrameException
【发布时间】:2017-08-27 09:52:23
【问题描述】:

我有一个 Chrome 扩展程序,我想用 Selenium 对其进行测试。该扩展程序将 iframe 标记放置到页面上。

我可以通过运行以下命令成功获取 iframe 标签:

top_frame = driver.find_element(By.XPATH, value='//iframe[@class="top-frame"]')

但是,当我尝试切换到框架时,我收到“NoSuchFrameException”错误。

driver.switch_to.frame(top_frame)

以下行正确输出框架的类名

print(top_frame.get_attribute('class')) 

错误日志:

Testing http://www.google.com

Traceback (most recent call last):
  File "test/run_tests.py", line 200, in <module>
    main()
  File "test/run_tests.py", line 197, in main
    run_tests(args.plugin, args.out, args.url)
  File "test/run_tests.py", line 167, in run_tests
    button = check_button(driver, url)
  File "test/run_tests.py", line 84, in check_button
    driver.switch_to.frame(top_frame)
  File "/home/burak/.virtualenv/extension/lib/python3.5/site-packages/selenium/webdriver/remote/switch_to.py", line 87, in frame
    self._driver.execute(Command.SWITCH_TO_FRAME, {'id': frame_reference})
  File "/home/burak/.virtualenv/extension/lib/python3.5/site-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
    self.error_handler.check_response(response)
  File "/home/burak/.virtualenv/extension/lib/python3.5/site-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchFrameException: Message: no such frame: element is not a frame
  (Session info: chrome=60.0.3112.90)
  (Driver info: chromedriver=2.31.488763 (092de99f48a300323ecf8c2a4e2e7cab51de5ba8),platform=Linux 4.10.0-30-generic x86_64)

【问题讨论】:

  • 框架可能没有被初始化。因为浏览器可能会阻止框架本身?
  • 不过,我可以拿到框架。我想框架的初始化不是问题。
  • 您目前是不是在提到的其他框架上?
  • 不,我在我提到的框架上。因为 top_frame.get_attribute('class') 方法调用给了我我想要的框架的类名。
  • 试试这个代码,让我知道它是否适合你-top_frame = driver.find_element(By.XPATH, value='//iframe[@class="top-frame"]') driver.switch_to.default_content() driver.switch_to.frame(top_frame)

标签: python-3.x google-chrome selenium iframe selenium-chromedriver


【解决方案1】:

试试这个人,

driver.switch_to.frame(driver.find_element(By.XPATH,value=".//iframe[@src='give your frame source name here..']"));

【讨论】:

    【解决方案2】:

    在最新版本的 Chrome 中,很可能存在中断 switch_to_frame() 调用的错误。于是,我开始改用火狐,目前一切都很顺利。

    【讨论】:

      【解决方案3】:

      此链接指向有关 Chromium 的相关问题报告。它还没有解决。 (25/10/17) https://bugs.chromium.org/p/chromedriver/issues/detail?id=2019

      【讨论】:

        猜你喜欢
        • 2015-04-30
        • 2018-02-12
        • 2017-08-17
        • 2020-09-10
        • 1970-01-01
        • 2018-03-25
        • 2017-03-28
        • 1970-01-01
        • 2013-06-23
        相关资源
        最近更新 更多