文字搬运工,本文主要介绍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无界面浏览器引擎自动化测试的更多相关文章

  1. selenium phantomjs java无界面浏览器环境搭建

    java selenium搭建无界面浏览器 1.http://phantomjs.org/ 下载windows版phantomjs 2.解压后bin目录下会有exe文件 3.测试代码: package ...

  2. ubuntu中如何安装selenium+chrome(headless)无界面浏览器?

    selenium是一个Web的自动化测试工具,它可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,甚至页面截屏,或者判断网站上某些动作是否发生.但是它自身不带浏览器,不支持浏览器的功能,因此它 ...

  3. Chrome handless无界面浏览器的脚本操作

    1.什么是Phantomjs (已经停止更新) 是一个无界面的浏览器 支持页面元素查找,js的执行等 由于不进行css和gui渲染,运行效率要比真实的浏览器要快很多 2.如何使用Phantomjs? ...

  4. PhantomJS快速入门-无界面浏览器

    https://blog.csdn.net/libsyc/article/details/78199850 PhantomJS快速入门 本文简要介绍了PhantomJS的相关基础知识点,主要包括Pha ...

  5. nodejs模块Phantom,无界面浏览器

    PhantomJS 是一个无界面的 webkit 内核浏览器,

  6. ubuntu下安装无界面浏览器

    ubuntu下安装PhantomJS 1.下载: 32位:wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-li ...

  7. headless webkit(无界面浏览器、爬虫)

    phantomjs / puppeteer https://github.com/amir20/phantomjs-node https://github.com/GoogleChrome/puppe ...

  8. Python:Selenium 1:浏览器驱动

    Selenium是一个用于测试网站的自动化测试工具,爬虫中也经常用到,支持各种浏览器包括Chrome.Firefox.Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器. 自Web ...

  9. selenium2支持无界面操作(HtmlUnit和PhantomJs)

    selenium2支持无界面操作(HtmlUnit和PhantomJs) selenium2支持通过各种driver(FirfoxDriver,IternetExplorerDriver,OperaD ...

随机推荐

  1. Vue移动端项目中下拉刷新和上拉加载

    Vue2.0中引入Mint-UI的下拉刷新和上拉加载.简单粗暴 安装Mint-UI npm i mint-ui -S 引入 打开项目的main.js入口文件,引入并使用.注意,为了方便,这里是全部引入 ...

  2. Kubernetes 持久化存储是个难题,解决方案有哪些?\n

    像Kubernetes 这样的容器编排工具正在彻底改变应用程序的开发和部署方式.随着微服务架构的兴起,以及基础架构与应用程序逻辑从开发人员的角度解耦,开发人员越来越关注构建软件和交付价值. Kuber ...

  3. 百度云BaaS体系揭秘,突破共识机制、单机计算和串行处理三大瓶颈

    区块链作为去中心化的技术机制拥有广泛的应用场景与市场潜能.自2017年爆发式增长后,区块链虽然已经进入平稳期,但仍然存在概念混淆.技术性能制约.智能合约制约.共识机制.网络建设等痛点.为了打破行业壁垒 ...

  4. python实现二分叉查找

    *二分叉查找就是折半查找 比如12345这几个数字当中找2,他会先找到这五个数字中的中坚的那个与2进行比较,比如中间的3>2他就认为3以后的不用查找了,然后查找3左边的,即123,再把这个分半, ...

  5. UDT的Sender和Receiver

    Sender算法 数据结构和变量: Sender's Loss List:发送方的loss list用来存储丢失包的序列号,序列号来自于两个地方,一是receiver通过NAK包反馈回来,二是超时事件 ...

  6. Knapsack Problem

    0-1背包 描述:N件物品,第i件的重量是w[i],价值v[i].有一个容量为W的背包,求将哪些物品放入背包可使总价值最大.每件物品可以用0或1次. 分析:根据题意,可以写出表达式: \[max(\S ...

  7. Java——Java泛型

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 一.泛型概述 1.定 ...

  8. while持续输入的几种常用使用方法

    while(scanf("%d,&n")!=EOF) 如果n被成功读入,则返回值为1, 如果n未被成功读入,则返回值为0, 如果遇到错误或遇到end of file,返回值 ...

  9. 基础JS遇到的一些题01

    1.两种数组去重方法 const unique = arr =>{ let mySet = new Set(arr); /!* let newArr =[]; for (let i = 0 ;i ...

  10. STM32 OSAL操作系统抽象层的移植

    文章目录 什么是 OSAL? 源码安装 Linux 上OSAL的移植 STM32上OSAL的移植 关键点 测试代码 结语 附件 什么是 OSAL? 今天同学忽然问我有没有搞过OSAL,忽然间一头雾水, ...