Python selenium:在iframe中滚动

时间:2017-06-23 06:47:18

标签: python selenium firefox iframe

Trying to scroll tab 4.

嗨,我可以在标签之间切换,访问所有元素。我无法滚动此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>

2 个答案:

答案 0 :(得分:0)

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

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')

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

答案 1 :(得分:0)

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

希望有所帮助!