selenium滚动截图

背景

  • python
  • selenium
  • 截长图

目标

  • 滚动截图

过程

    def get_screenshot_scroll(self, scroll=500, scroll_interval=0.1):
        '''
        滚动截图
        注:必须开启无界面模式,即:--headless
        scroll 默认 100 ,向下滚动的像素数量
        scroll_interval 默认0.1s,滚动间隔
        width 截图的宽度  默认1440
        '''
        try:
            self.logger.info('开始截图,当前地址:' + self.browser.current_url)
            js_height = "return document.body.clientHeight"
            k = 1
            height = self.browser.execute_script(js_height)
            while True:
                if k * scroll < height:
                    js_move = "window.scrollTo(0,{})".format(k * scroll)
                    self.browser.execute_script(js_move)
                    time.sleep(scroll_interval)
                    height = self.browser.execute_script(js_height)
                    k += 1
                else:
                    break
                # 截图总高度最大量
                if height > 40000:
                    break
            # 接下来是全屏的关键,用js获取页面的宽高,如果有其他需要用js的部分也可以用这个方法
            width = self.window_size_width
            # width = self.browser.execute_script("return document.body.scrollWidth")
            height = self.browser.execute_script("return document.body.scrollHeight")
            self.logger.info('----->scroll screenshot width:{} height:{}'.format(width, height))
            # 将浏览器的宽高设置成刚刚获取的宽高
            self.browser.set_window_size(width, height)
            # 截图
            # png_file = f'1.png'
            # self.browser.save_screenshot(png_file)
            bytes_content = self.browser.get_screenshot_as_png()
            self.logger.info('滚动截图完成')
            return bytes_content
        except Exception as e:
            self.logger.info('-----> get screenshot err:' + e)

展示示例

capture.jpg

总结

  • 注:必须开启无界面模式,即:--headless

致谢

  • 参考了很多网上的文章
  • 如果有对您有帮助请点赞
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容