【问题标题】:Python selenium: Scrolling inside iframePython selenium:在 iframe 内滚动
【发布时间】:2017-11-26 15:24:33
【问题描述】:

嗨,我可以在标签之间切换,访问所有元素。我无法在此 iframe 中滚动。脚本执行没有错误。但是滚动没有发生。请帮忙。我使用的代码如下。

    # switching to iframe
    iframe = self.browser.find_elements_by_tag_name('iframe')[0]
    self.browser.switch_to_frame(iframe)
    time.sleep(1)

    #clicking tab 4
    self.force_click('xpath=/html/body/div/md-content/md-tabs/md-tabs-wrapper/md-tabs-canvas/md-pagination-wrapper/md-tab-item[4]/span')
    time.sleep(4)

    #scrolling
    elm = self.browser.find_elements_by_tag_name('html')
    elm[0].send_keys(Keys.END)

iframe的HTML如下。

<iframe id="widget-iframe" class="widget-iframe" frameborder="0" ap-onunload="vm.onFrameUnload()" ap-onload="vm.onFrameLoad()" ng-src="/apps/launchpad-view-widget/" src="/apps/launchpad-view-widget/">
  <!DOCTYPE html>
  <html class="ng-scope" ng-app="launchpadViewWidget">
     <head>
     <body>
  </html>
</iframe>

【问题讨论】:

  • 你可以在切换到那个 iframe 后尝试 javascript 滚动
  • 请提供我需要的脚本尝试使用java脚本。
  • 这会向下滚动到页面底部-> driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
  • 我试过这个,但它不起作用。通过没有任何错误,但没有滚动。
  • 你能检查一下吗,把id换成你需要滚动到view的元素->element = driver.find_element_by_id('some_id') element.location_once_scrolled_into_view

标签: python selenium firefox iframe


【解决方案1】:

我以前遇到过这种情况。我看不到滚动区域之外的值。解决方案是获取通过 JSON 填充表的 javascript 对象。您可以使用 javascriptexecutor 执行此操作:driver.execute_script

希望有帮助!

【讨论】:

    【解决方案2】:

    我建议您将窗口大小设置得更大,这样您就不必滚动了

    self.browser.set_window_size(1920,1080)#(4096, 3112) <-4k resolution(if needed)
    

    -- 编辑:

    也可以从浏览器中获取 HTML 代码并使用 BeautifulSoup 进行管理

    html_source = browser.page_source
    

    对于 python2.x 我推荐

    html_source = browser.page_source.encode('utf-8')
    

    然后找到你想要的表格而不用关心滚动。

    【讨论】:

    • 谢谢,这工作现在。但我担心如果我的表大小超过 4k 限制,它可能会再次丢失行。
    • 无论如何,我可以在不滚动的情况下获得完整的html页面源(包括隐藏在当前窗口中的部分)?
    • @unnikrishnan.v 编辑了我的答案。
    • 当我使用 html_source = browser.page_source 时,我没有获取行的 html,这些行在当前窗口中不可见(要获取这些行的 html,我需要滚动。)
    猜你喜欢
    • 2017-11-23
    • 2019-04-22
    • 2018-10-30
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多