内容简介:HEADLESS BROWSER 指的是不需要用户界面的浏览器,这种浏览器在自动化测试和爬虫领域有着广泛的应用。例如你想在网页上运行一些测试,从网页抓取信息,检查浏览器访问某些资源的状态,定时截取网页等等,你需要的是浏览器处理网页但不一定需要浏览器界面,这些情况都是HEADLESS BROWSER的应用场景。Chrome 从 59.0 开始支持HEADLESS模式(2017年5月),Firefox从 55.0 开始也支持了HEADLESS模式(2017年9月)。也就是在今年2018年的4月份,老牌的无头浏
HEADLESS BROWSER 指的是不需要用户界面的浏览器,这种浏览器在自动化测试和爬虫领域有着广泛的应用。
例如你想在网页上运行一些测试,从网页抓取信息,检查浏览器访问某些资源的状态,定时截取网页等等,你需要的是浏览器处理网页但不一定需要浏览器界面,这些情况都是HEADLESS BROWSER的应用场景。
Chrome 从 59.0 开始支持HEADLESS模式(2017年5月),Firefox从 55.0 开始也支持了HEADLESS模式(2017年9月)。也就是在今年2018年的4月份,老牌的无头浏览器 PhantomJS 的核心开发者宣布不再维护该项目,因为Chrome 和Firefox的HEADLESS模式已经足够好并可以替代PhantomJS。
实践 Selenium + HEADLESS
使用浏览器的HEADLESS模式进行自动化测试,你需要先满足以下前提:
- Python + Selenium 运行环境
- Chrome 59+ 或者 Firefox 55+
- ChromeDriver 或者 GeckoDriver 最新版已加入PATH
万事俱备,废话不多说我们直接上演示代码。
Chrome版实例
from time import sleep from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument('--headless') options.add_argument('--disable-gpu') # 允许在无GPU的环境下运行,可选 options.add_argument('--window-size=1920x1080') # 建议设置 browser = webdriver.Chrome(chrome_options=options) browser.get('https://www.baidu.com') browser.find_element_by_id('kw').send_keys('HELLO') browser.find_element_by_id('su').click() sleep(1) # 简单粗暴的等待,实际项目中勿用 assert browser.title == u'HELLO_百度搜索' browser.save_screenshot('chrome-headless-test.png')
Firefox版实例
from time import sleep from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() options.add_argument('--headless') # options.add_argument('--window-size=1920x1080') # Firefox无效 browser = webdriver.Firefox(firefox_options=options) browser.set_window_size(1280, 1024) # 启动后设置浏览器大小,但是高度会随着访问的网页变化 browser.get('https://www.baidu.com') browser.find_element_by_id('kw').send_keys('HELLO') browser.find_element_by_id('su').click() sleep(1) assert browser.title == u'HELLO_百度搜索' browser.save_screenshot('firefox-headless-test.png')
总结
浏览器HEADLESS模式可以让程序运行的环境更贴近用户访问的真实环境,相对于模拟UserAgent等方式得出的数据也会更加准确可靠。
尤其在自动化测试领域,HEADLESS也有取代传统的带界面的自动化测试的趋势,有一些公司已经 将实践投入生产 中。我们可以在调试自动化测试时使用用户界面,当部署到持续集成环境中是启用HEADLESS,并开启多线程使用并行的方式来运行测试案例,这样效率会大大提高,而且因为界面被干扰而导致测试失败的概率也会降低。
总的来说,至少在端对端的自动化测试中,HEADLESS模式没有明显的缺点,甚至可以成为网页自动化测试进化的下一个目标。
参考文档
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 自动化处理浏览器任务
- 跨平台的浏览器自动化工具 Playwright 简析
- 跨平台的浏览器自动化工具 Playwright 简析
- 你该了解的自动化测试工具:Selenium控制浏览器的常用方法!
- CSS浏览器兼容性的4个解决方案:浏览器CSS样式初始化、浏览器私有属性,CSS hack语法和自动化插件
- [ Laravel从入门到精通 ] 测试系列 —— 在 Laravel 中基于 Dusk 实现浏览器自动化测试(一):快速入门
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
并行算法的设计与分析
陈国良 / 2009-8 / 66.00元
第3版在修订版的基础上进行了大幅度的修订,新增加3章、重写3章,改写8章。《普通高等教育十一五国家级规划教材·并行算法的设计与分析(第3版)》系统深入地讨论了计算机领域中诸多计算问题的并行算法的设计和分析方法。在着重介绍各种并行计算模型上的常用和典型的并行算法的同时,也力图反映本学科的最新成就、学科前沿和发展趋势。 全书共分二十章,包括基础篇4章(绪论、设计技术、前缀计算、排序和选择网络),......一起来看看 《并行算法的设计与分析》 这本书的介绍吧!
Markdown 在线编辑器
Markdown 在线编辑器
HEX CMYK 转换工具
HEX CMYK 互转工具