`
aerchi
  • 浏览: 453044 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
文章分类
社区版块
存档分类
最新评论

使用 Selenium 给网页截图

 
阅读更多

以前写过一篇博客,介绍了命令行方式下的网页截图工具,最近发现,使用Selenium来做网页截图似乎更加方便。

Selenium 是一个可以让浏览器自动化地执行一系列任务的工具,常用于自动化测试。不过,也可以用来给网页截图。目前,它支持 Java、C#、Ruby 以及 Python 四种客户端语言。如果你使用 Python,则只需要在命令行里输入“sudo easy_install selenium”并回车,即可安装 selenium 的 Python 版本的客户端支持。

以 Python 为例,我们可以使用下面的脚本来给指定页面(比如淘宝首页)截图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# -*- coding: utf-8 -*-
#
# author: oldj <oldj.wu@gmail.com>
#
from selenium import webdriver
import time
def capture(url, save_fn="capture.png"):
browser = webdriver.Firefox() # Get local session of firefox
browser.set_window_size(1200, 900)
browser.get(url) # Load page
browser.execute_script("""
(function () {
var y = 0;
var step = 100;
window.scroll(0, 0);
function f() {
if (y < document.body.scrollHeight) {
y += step;
window.scroll(0, y);
setTimeout(f, 50);
} else {
window.scroll(0, 0);
document.title += "scroll-done";
}
}
setTimeout(f, 1000);
})();
""")
for i in xrange(30):
if "scroll-done" in browser.title:
break
time.sleep(1)
browser.save_screenshot(save_fn)
browser.close()
if __name__ == "__main__":

注意到,上面的代码中,我并没有在打开页面后立即截图,而是先在页面上执行了一段 JavaScript 脚本,先将页面的滚动条拖到最下方,再拖回顶部,然后才截图。这样的好处是如果页面下方有一些延迟加载的内容,在这个操作之后一般也都已加载了。

PageSaver等浏览器插件相比,Selenium 功能更为强大,例如,它可以在页面上注入并执行一段 JS,还可以模拟鼠标点击等行为,而且可以同时运行多个实例(多个线程同时截图)。这样看来,使用 Selenium 来给页面截图似乎是一个不错的选择。

分享到:
评论

相关推荐

    [python]利用Selenium实现网页全屏截图+部分截图并web实现

    通过这种方式,你可以构建一个简单的Web服务,允许用户通过HTTP请求触发网页截图,返回结果以附件形式下载。 总结来说,Selenium是一个功能强大的工具,不仅用于自动化测试,还能辅助开发者进行各种网页操作,包括...

    Python中使用 Selenium 实现网页截图实例

    不过,也可以用来给网页截图。目前,它支持 Java、C#、Ruby 以及 Python 四种客户端语言。如果你使用 Python,则只需要在命令行里输入“sudo easy_install selenium”并回车,即可安装 selenium 的 Python 版本的...

    Python 以无头浏览器模式使用 selenium 实现网页截屏

    这个程序使用 Chrome 浏览器的无头模式来访问百度首页,并等待3秒钟,最后将屏幕截图保存为 `baidu.png` 文件。 请注意,在使用无头浏览器时,可能需要根据网站特定的设置调整其相关参数,比如 user-agent 和 ...

    Selenium Webdriver实现截图功能的示例

    在Selenium WebDriver中实现截图功能,可以使用TakesScreenshot接口提供的方法。这个接口是WebDriver的一部分,它提供了getScreenshotAs()方法,这个方法能够捕获当前浏览器窗口的屏幕截图,并且可以指定截图的格式...

    自己写的python Selenium网站全屏截图成语

    在这个特定的项目中,"自己写的python Selenium网站全屏截图成语",我们看到开发者已经编写了一个Python脚本,利用Selenium来实现对网页进行全屏截图的功能。这在很多场景下都非常有用,比如监控网站状态、网站历史...

    java使用Selenium模拟登陆58(验证码登陆&密码登陆)若快平台识别文字点击验证码Demo

    Java 使用 Selenium 模拟登录58同城的流程涉及到了多个技术点,包括自动化测试框架Selenium的使用、验证码识别以及密码登录的实现。下面将详细解释这些知识点。 1. **Selenium**: Selenium 是一个用于 Web 应用程序...

    selenium右击另存为图片

    在IT行业中,自动化测试和网页操作经常需要用到Python的Selenium库。Selenium是一个强大的Web应用程序接口(API),它允许我们模拟用户与浏览器的交互,包括点击、输入、滚动、导航等,非常适合进行功能自动化测试和...

    Selenium使用指南

    ### Selenium使用指南知识点详解 #### 一、前言 Selenium 是一个强大的自动化测试工具集,主要用于Web应用程序的测试。它支持多种编程语言,并且可以在不同的浏览器上运行。本指南旨在帮助用户快速掌握Selenium的...

    centos宋体下载&Ubuntu宋体下载&解决selenium在谷歌浏览器上截图乱码

    在本主题中,我们关注的是如何在CentOS和Ubuntu这样的Linux发行版中下载并安装宋体,以及解决在使用Selenium控制谷歌浏览器时可能出现的截图乱码问题。 首先,宋体作为Windows操作系统中的常见字体,它在Linux下...

    告别 Selenium 时代!新的高效丝滑网页自动化库

    DrissionPage 同样是一款基于 Python 的网页自动化工具,不仅可以像 Selenium、Playwright、Puppeteer一样控制浏览器进行操作,还能直接收发数据包,甚至可以将两者结合使用,兼顾便利性和效率。

    selenium2 Java版 使用方法

    - **截图**:使用Selenium获取验证码图片并保存。 - **OCR识别**:调用Tesseract OCR进行识别并返回结果。 ##### 5.2 Excel数据读取 - **使用Apache POI库**:该库提供了丰富的API用于操作Excel文件。 - **读取数据...

    python基于selenium所截图片的对比操作

    在本案例中,`t1.png`和`t2.png`很可能是通过Selenium截取的网页屏幕快照,分别代表两个不同状态的UI。 接下来,我们来看`find_diff.py`这个文件。这应该是一个Python脚本,实现了图片的比较功能。通常,图片对比...

    C#网页截图(不打开网页) 两种方式实现网页快照

    在IT行业中,尤其是在软件开发领域,网页截图和快照功能是非常常见的需求,特别是在自动化测试、数据分析或者用户反馈等方面。在C#编程环境下,我们可以利用不同的技术来实现网页快照的功能,而无需实际打开浏览器。...

    Python实现的网页截图功能【PyQt4与selenium组件】

    Python实现网页截图功能主要涵盖了使用PyQt4和selenium这两个组件来进行网页截图的实现。PyQt4是一个创建图形用户界面应用的框架,而selenium是一个自动化测试工具,它能够控制浏览器并模拟用户行为进行操作。在了解...

    selenium之foxfire的gwebdriver驱动

    在IT行业中,Selenium是一个广泛使用的自动化测试工具,主要用于网页应用程序的自动化测试。它支持多种浏览器,包括Firefox。当我们谈论"Selenium之Firefox的gwebdriver驱动"时,实际上是指使用Selenium与Firefox...

    Selenium rc+selenium_java

    这两个组件都是Selenium测试框架的一部分,用于网页应用的自动化测试。 Selenium是一个开源的Web应用程序自动化工具,它允许开发者编写脚本来模拟用户与浏览器的交互,如点击按钮、填写表单、导航等。Selenium支持...

    java版本的网页截图实例

    以下是一个使用Selenium WebDriver进行网页截图的示例: ```java import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium....

    C#生成网页截图 C#将网页内容转换成图片保存到本地( webbrowser 可应用于B/S结构中)

    bitmap.Save("网页截图.png", ImageFormat.Png); } ``` 这里创建了一个与`WebBrowser`控件相同尺寸的位图,然后调用`DrawToBitmap`方法将控件的内容绘制到位图上,最后保存为PNG格式的图片。 6. **处理B/S结构...

    java 网页截图

    以上就是使用Java和Selenium WebDriver实现网页截图的基本流程。实际应用中,可能需要处理更多细节,如设置浏览器窗口大小、等待页面元素加载、处理JavaScript异步加载的内容等。另外,`captureScreen`可能是代码中...

    selenium_webdriver学习

    在IT行业中,Selenium WebDriver是一个广泛使用的自动化测试工具,尤其在网页应用的软件测试领域。这个工具允许开发者编写脚本来模拟用户与浏览器的交互,从而进行功能验证、性能测试、回归测试等一系列测试任务。本...

Global site tag (gtag.js) - Google Analytics