python之Phantomjs无界面浏览器引擎自动化测试

文字搬运工,本文主要介绍PhantomJS功能,其中有屏幕快照功能,为后面更新【python接口自动化脚本更新版本】,其中新版本中新增自动发送邮件功能正文带图片,使用PhantomJS截取图片后发送邮件,已发版本可看往期【python脚本实现接口自动化轻松搞定上千条接口用例】
PhantomJS是一个无界面的,基于 WebKit(WebKit是一个开源的浏览器引擎,Chrome,Safari就是用的这个浏览器引擎) 的服务器端 JavaScript API。它原生支持多种web 标准:DOM 操作,CSS选择器,JSON,Canvas 以及SVG。
PhantomJS主要场景
1、无UI界面的网站测试
2、屏幕快照
3、页面操作自动化
4、网络监控
使用PhantomJS,而不用Chromedriver和firefox,主要是因为PhantomJS的静默方式(后台运行,不打开浏览器)。
与python+selenium对比
优点:采用的模拟浏览器的内核,高仿浏览器行为,可以直接在浏览器上撸 (效率上要高不少)
缺点:有些验证码破解绕不过,没有python+selenium这种处理起来方便,但这个缺点必须依赖浏览器,如果是服务器,这种没有桌面终端的,更别提浏览器,基本就凉凉。
综合:可将Selenium + PhantomJS + python 简单实现爬虫的功能
安装使用
文档链接:
PhantomJS官方文档:http://phantomjs.org/api/command-line.html
PhantomJS官方下载:http://phantomjs.org/download
PhantomJS官方地址:http://phantomjs.org/
PhantomJS官方API:http://phantomjs.org/api/
PhantomJS官方示例:http://phantomjs.org/examples/
PhantomJS GitHub:https://github.com/ariya/phantomjs/
环境变量配置
1.下载完成后放到自己喜欢的一个位置,然后进入bin文件夹,然后把这个路径添加到环境变量里面。
2.环境变量配置:vi ~/.bash_profile,在最下面添加 alias phantomjs=’/PATH/phantomjs’,其中PATH为解压后phantomjs文件所在路径,例如:/Documents/PhantomJS/bin/phantomjs,最后source ~/.bash_profile 生效。
3.打开终端,输入phantomjs回车,如果你看到phantomjs>,说明你的环境变量已配置好
4.输入phantom.exit()退出
例子:
1.chrom浏览器自动搜索
from selenium import webdriver
from time import sleep
创建浏览器对象 驱动为浏览器的路径
bro = webdriver.Chrome("./chromedriver.exe")
url = "https://www.baidu.com"7 # 发送请求
bro.get(url)
让百度指定词条的搜索
text = bro.find_element_by_id('kw')
发送关键字
text.send_keys('python')
点击搜索按钮
button = bro.find_element_by_id('su')
button.click()
关闭浏览器
bro.quit()
2.phantomjs无界面浏览器,其自动化流程上述操作谷歌自动化流程一致
from selenium import webdriver
from time import sleep
bro = webdriver.PhantomJS('/usr/local/bin/phantomjs')
url = "https://www.baidu.com"
发送请求
bro.get(url)
bro.save_screenshot('./test1.png')
让百度指定词条的搜索
text = bro.find_element_by_id('kw')
发送关键字
text.send_keys('python')
bro.save_screenshot('./test2.png')
点击搜索按钮
button = bro.find_element_by_id('su')
button.click()
sleep(3)
bro.save_screenshot('./test3.png')
关闭浏览器
bro.quit()
3.豆瓣网电影排行榜滚动条数据
from selenium import webdriver
from time import sleep3 url = 'https://movie.douban.com/typerank?type_name=喜剧&typ
e=24&interval_id=100:90&action='
bro = webdriver.PhantomJS('/usr/local/bin/phantomjs') # phantomjs运行路径
bro.get(url)
sleep(1)
bro.save_screenshot("./test1.png")
js = 'window.scrollTo(0,document.body.scrollHeight)'
执行js代码 滚动条
bro.execute_script(js)
sleep(1)
bro.save_screenshot('./test2.png')
获取页面数据
page_source = bro.page_source
print(page_source)
python脚本实现接口自动化轻松搞定上千条接口用例
Htop/Glances/Dstat性能测试系统监控工具领域的瑞士军刀
好用的python性能测试神器–Locust
Linux上,最常用的一批命令解析【精选】
玩转Nginx location配置
预告:【即将更新一个python接口自动化脚本新版本,增加多个功能,敬请期待!!】
赶快动动你的手指头,关注起来吧!
python之Phantomjs无界面浏览器引擎自动化测试的更多相关文章
- selenium phantomjs java无界面浏览器环境搭建
java selenium搭建无界面浏览器 1.http://phantomjs.org/ 下载windows版phantomjs 2.解压后bin目录下会有exe文件 3.测试代码: package ...
- ubuntu中如何安装selenium+chrome(headless)无界面浏览器?
selenium是一个Web的自动化测试工具,它可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生.但是它自身不带浏览器,不支持浏览器的功能,因此它 ...
- Chrome handless无界面浏览器的脚本操作
1.什么是Phantomjs (已经停止更新) 是一个无界面的浏览器 支持页面元素查找,js的执行等 由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多 2.如何使用Phantomjs? ...
- PhantomJS快速入门-无界面浏览器
https://blog.csdn.net/libsyc/article/details/78199850 PhantomJS快速入门 本文简要介绍了PhantomJS的相关基础知识点,主要包括Pha ...
- nodejs模块Phantom,无界面浏览器
PhantomJS 是一个无界面的 webkit 内核浏览器,
- ubuntu下安装无界面浏览器
ubuntu下安装PhantomJS 1.下载: 32位:wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-li ...
- headless webkit(无界面浏览器、爬虫)
phantomjs / puppeteer https://github.com/amir20/phantomjs-node https://github.com/GoogleChrome/puppe ...
- Python:Selenium 1:浏览器驱动
Selenium是一个用于测试网站的自动化测试工具,爬虫中也经常用到,支持各种浏览器包括Chrome.Firefox.Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器. 自Web ...
- selenium2支持无界面操作(HtmlUnit和PhantomJs)
selenium2支持无界面操作(HtmlUnit和PhantomJs) selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaD ...
随机推荐
- HDU 4009 Transfer water(最小树形图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4009 题意:给出一个村庄(x,y,z).每个村庄可以挖井或者修建水渠从其他村庄得到水.挖井有一个代价, ...
- FastJson踩坑:@JsonField在反序列化时失效
问题描述 一个对象(某个字段为枚举类型,为了不采用默认的序列化过程,用@JSONField指定了序列化器和反序列器,过程见旧博文),将其放到JSONArray中再序列化JSONArray对象,用得到的 ...
- 替换input单选框的样式
实现效果:. css的input单选框的样式很丑,有时候不想使用原生的样式,如上照片,可以使用下面的方法. 思路是,给inpu加visibility:hidden隐藏,然后使用不同的图片绝对定位覆盖在 ...
- 2019年 ICPC亚洲区预赛(上海赛区)总结
首先,我要说,我输了,输给了自己的无知,输给了自己的心态与实力. 上海区域赛,打铁而归,最终还是没有比过自己SLG的朋友.要说什么呢?实力的差距,还是说给自己的失败找借口?不能进入金牌区,为什么铜牌区 ...
- CodeForces - 260C
CodeForces - 260C Little Vasya had n boxes with balls in the room. The boxes stood in a row and were ...
- Pika源码学习--pika的通信和线程模型
pika的线程模型有官方的wiki介绍https://github.com/Qihoo360/pika/wiki/pika-%E7%BA%BF%E7%A8%8B%E6%A8%A1%E5%9E%8B,这 ...
- Java——多线程锁的那些事
引入 Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率. 下面先带大家来总体预览一下锁的分类图 1.乐观锁 VS 悲观锁 乐观锁与悲观锁是一种广义上的概念,体现了 ...
- basicRF双向灯光控制
题目: 实现基于BasicRF无线点对点通信的双向灯光控制,具体要求如下: 1> 节点A 和节点B 的PANID设置为0x1234,通道号设置为17,节点地址自定义.<2> 按下节点 ...
- 201771010113 李婷华 《面向对象程序设计(Java)》第十一周总结
一.理论知识部分 第九章 集合 1.数据结构介绍: 线性结构:线性表,栈,队列,串,数组,文件.非线性结构:树,图. 散列表:又称为哈希表. 散列表算法的基本思想是:以结点的关键字为自变量,通过一定 ...
- 05_CSS入门和高级技巧(3)
上节课复习 !important不能影响就近原则,远的标签如果加上!important也干不过近的标签! !important不能影响继承权重是0,通过继承的标签加上!important也干不过直接选 ...