什么是Headless Chrome?
Headless Chrome 是 Chrome 浏览器的无界面形态,可以在不打开浏览器的前提下,使用所有Chrome支持的特性,在命令行中运行你的脚本。相比于其他浏览器,Headless Chrome 能够更加便捷的运行web自动化测试、编写爬虫、截取图等功能。相比于较早的 PhantomJS,SlimerJS 等,Headless Chrome 则更加贴近浏览器环境。如果你曾用过或者熟悉PhantomJS,那么好,请记住,Headless Chrome 发布就是来代替phantomjs的。
为什么是Headless Chrome
- 对于UI自动化测试,少了真实浏览器加载css,js以及渲染页面的工作。无头测试要比真实浏览器快的多。
- 可以在无界面的服务器或CI上运行测试,减少了外界的干扰,使自动化测试更稳定。
- 在一台机器上可以模拟运行多个无头浏览器,方便进行并发测试
- 它爹是Google(自己去联想,最新JS语法支持啥的就不多废话了),且Ariya Hidayat已经放弃对Phantom.js的维护。 相比phantomjs,完成任务快,占用内存少。
来个demo测试下
#!/usr/bin/env python # -*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.chrome.options import Options import datetime chrome_options = Options() chrome_options.add_argument("--headless") base_url = "http://www.baidu.com/" #对应的chromedriver的放置目录 driver = webdriver.Chrome(executable_path=(r'change to your chromedriver path'), chrome_options=chrome_options) driver.get(base_url + "/") start_time=starttime = datetime.datetime.now() print('this is start_time ',start_time) driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click() driver.save_screenshot('screen.png') driver.close() end_time=datetime.datetime.now() print('this is end_time ',end_time)
chromedriver下载地址:http://chromedriver.storage.googleapis.com/index.html
如果相对chrome-headless进一步调研,请移步官网:https://developers.google.cn/web/updates/2017/04/headless-chrome