selenium 支持的两种伪浏览器模式

HtmlUnit 模式


HtmlUnit 官方网站:http://htmlunit.sourceforge.net/
HtmlUnit 是一款开源的 Java 页面分析工具,读取页面后,可以有效地使用 HtmlUnit 分析页面上的内容,项目可以模拟浏览器运行,被誉为 Java 浏览器的开源实现。这个没有界面的浏览器运行速度非常迅速。Selenium server 中已经包含了 HtmlUnit 驱动。
首先,在 Windows 命令提示符(或 Linux 终端)下启动 Selenium Server。
> java -jar selenium-server-standalone-2.47.0.jar
Selenium Server 的作用参考这篇帖子:Selenium-Server-Standalone 搭建
然后,运行脚本。

from selenium.webdriver import Remote
from selenium.common.exceptions import WebDriverException

dc = {'browserName':'htmlunit'}
driver = Remote(command_executor='http://127.0.0.1:4444/wd/hub',desired_capabilities=dc)
driver.get("http://www.baidu.com")

driver.find_element_by_id("kw").send_keys("htmlunit")
driver.find_element_by_id("su").click()
driver.get_screenshot_as_file("D:\\run_ok.jpg")
driver.quit()

这种模式下运行脚本并不会真正地打开浏览器,整个过程都是在后台执行的。所以,为了证明运行是成功的,或者证明脚本确实执行了,可以在适当的步骤添加截图。

PhantomJS 模式


PhantomJS 官方网站:http://phantomjs.org/
PhantomJS 是一个拥有 JavaScript API 的无界面 WebKit 内核,与 HtmlUnit 类似。正如我们所知道的,WebKit 是 Safari 和其他一些浏览器使用的布局引擎。因此,PhantomJS 是一个浏览器,而且是一个无界面的浏览器。这意味着渲染后的网页实际上不会显示。所以我们可以把它作为一个可编程的浏览器终端。
在使用 PhantomJS 之前,需要先下载它。PhantomJS 支持 Windows、Mac、Linux 等平台,我们可以根据自己的环境选择相应的版本进行下载。
下载完成后解压得到 phantomjs.exe 程序,将其复制到已经添加到环境变量的目录下,即可通过 PhantomJS 模式运行测试脚本。

from selenium import webdriver
import time

driver = webdriver.PhantomJS()
driver.get("http://www.baidu.com")

try:
    driver.find_element_by_id("kw").send_keys("phantomjs")
	driver.find_element_by_id("su").click()
	time.sleep(1)
	driver.get_screenshot_as_file("D:\\baidu_ok.jpg")
except WebDriverException as msg:
    print(msg)
	driver.get_screenshot_as_file("D:\\baidu_error.jpg")
finally:
    driver.quit()