前端自动化测试工具PhantomJS+CasperJS结合使用教程

casperjs +phantomjs 爬虫抓包插件 利用casperjs +phantomjs实现登录抓取网页 并且截图;下载后解压后,在环境变量path中配置解压后bin目录的地址,如:E:\Program Files\casperjs\bin;E:\Program Files\phantomjs\bin 立即下载

下面的安装测试基于window系统(win10)

1.PhantomJS

PhantomJS 是一个基于 WebKit 的服务器端JavaScript API,它全面支持web而不需浏览器支持,其快速,原生支持各种Web标准: DOM 处理, CSS 选择器, JSON, Canvas, 和 SVG。 PhantomJS 可以用于 页面自动化, 网络监测 , 网页截屏 ,以及 无界面测试 等

1.1 安装

下载地址为:http://phantomjs.org/download.html 解压之后,可以加到环境变量中

1.2 使用

  • 示例demo1.js–截图:
var page = require('webpage').create();
page.viewportSize = {
    width: 1366,
    height: 800
};
var urls = ["https://www.baidu.com/", "https://zrysmt.github.io/"];
page.open(urls[0], function() {
    console.log('welcome!');
    page.render('screen.png');
    phantom.exit();
});

命令行输入:

phantomjs demo1.js
  • 示例demo2.js–DOM操作
var page = require('webpage').create();
phantom.outputEncoding = "gbk"; //解决中文乱码
page.open("https://www.baidu.com/", function(status) {
    console.log(status);
    page.render('screen.png');
    var title = page.evaluate(function() {
        return document.title;
    });
    console.log('Page title: ' + title);
    phantom.exit();
});

执行命令同上,得到结果是:

success
Page title: 百度一下,你就知道

所执行的DOM操作要在page.evaluate中,

  • 示例demo3.js–读取文件
var system = require('system');
var fs = require('fs');

phantom.outputEncoding = "gbk"; //解决中文乱码
var filePath = "url-02.txt";
var content = fs.read(filePath);
console.log(content);

url-02.txt中如果是很多url,一个一个访问url的话,可能会这样实现

page.open(urlArr[0], function(status) {
    page.open(urlArr[1], function(status) {
       page.open(urlArr[2], function(status) {
            //... ...
        }); 
    });
});

这样写法就有很大的不方便,于是我们就引入了CasperJS

2.CasperJS

2.1 安装

npm i casperjs --save-dev

为方便使用也可以加入到环境变量中

2.2 使用

  • 示例demo:casper-test.js–打开网页截图
var casper = require('casper').create();
casper.start();
casper.thenOpen('http://www.baidu.com/', function () {
    casper.captureSelector('baidu.png', 'html');
});
casper.run();

执行命令如下

casperjs casper-test.js
  • 示例demo:casper-test2.js–操作DOM,访问网页
var casper = require('casper').create();
var links;

function getLinks() {
// Scrape the links from top-right nav of the website
    var links = document.querySelectorAll('ul.navigation li a');
    return Array.prototype.map.call(links, function (e) {
        return e.getAttribute('href')
    });
}
// Opens casperjs homepage
casper.start('http://casperjs.org/');

casper.then(function () {
    links = this.evaluate(getLinks);
});

casper.run(function () {
    for(var i in links) {
        console.log(links[i]);
    }
    casper.done();
});

执行命令类比同上

  • 示例demo:casper-test3.js–单元测试
function Cow() {
    this.mowed = false;
    this.moo = function moo() {
        this.mowed = true; // mootable state: don't do that at home
        return 'moo!';
    };
}

casper.test.begin('Cow can moo', 2, function suite(test) {
    var cow = new Cow();
    test.assertEquals(cow.moo(), 'moo!');
    test.assert(cow.mowed);
    test.done();
});

执行命令

casperjs test casper-test3.js

结果是:

Test file: casper-test3.js
# Cow can moo
PASS Subject equals the expected value
PASS Subject is strictly true
PASS Cow can moo (2 tests)
PASS 2 tests executed in 0.031s, 2 passed, 0 failed, 0 dubious, 0 skipped.
  • 示例demo:casper-test4.js–浏览器测试
casper.test.begin('Google search retrieves 10 or more results', 5, function suite(test) {
    casper.start("http://www.google.fr/", function() {
        test.assertTitle("Google", "google homepage title is the one expected");
        test.assertExists('form[action="/search"]', "main form is found");
        this.fill('form[action="/search"]', {
            q: "casperjs"
        }, true);
    });

    casper.then(function() {
        test.assertTitle("casperjs - Recherche Google", "google title is ok");
        test.assertUrlMatch(/q=casperjs/, "search term has been submitted");
        test.assertEval(function() {
            return __utils__.findAll("h3.r").length >= 10;
        }, "google search for \"casperjs\" retrieves 10 or more results");
    });

    casper.run(function() {
        test.done();
    });
});

执行命令如demo3类比

3.PhantomJs+CasperJs

实现异步操作

var casper = require('casper').create(); //新建一个页面

casper.start(url1); //添加第一个URL
casper.thenOpen(url2); //添加第二个URL,依次类推
casper.thenOpen(url3);
casper.thenOpen(url4);

casper.run(); //开始导航

demo(casper-phantomjs.js)如下–一次访问三十几个url:

var fs = require('fs');
var casper = require('casper').create();
phantom.outputEncoding = "gbk"; //解决中文乱码

var filePath = "url-02.txt";
var content = fs.read(filePath);
var urlArr = content.split('\n');
casper.start();
for (var i = 0; i < urlArr.length; i++) {
    casper.thenOpen(urlArr[i], function() {
        this.echo('Page title: ' + this.getTitle());
    });
}
casper.run();
// phantom.exit();

执行命令

casperjs casper-phantomjs.js

参考阅读:
- http://phantomjs.org/
- PhantomJS快速入门教程
- http://casperjs.org/
- 浏览器自动化测试初探 - 使用phantomjs与casperjs
- CasperJS,基于PhantomJS的工具包

从入门到精通:MediaGo跨平台部署全攻略,Docker+NAS实战案例深度拆解! 本篇将深入解析开源媒体处理工具MediaGo的运作机制,该软件具备跨平台兼容性,支持Windows、MacOS及Linux三大主流操作系统。其核心创新在于采用模块化架构设计,用户无需额外依赖任何插件即可完成快速部署。作为GitHub平台上的开源项目,该工具特别注重用户体验设计,通过Docker容器化方案可无缝接入各类网络存储设备,显著优化系统资源占用并提升数据处理效率。以飞牛云NAS系统为实施案例,本文将详细展示本地化部署全流程。 阅读详情

相关推荐

进程间通信的七种方法实战演示!值得收藏!

线程和进程间的通讯(Inter-Process Communication, IPC)是操作系统中的一个重要概念,用于实现不同进程或同一进程中的不同线程之间的数据交换和协调。以下是几个常见的进程间通信的方式:管道、消息队列、共享内存、信号、套接字、信号量、文件映射

十年饮冰,难凉热血,保持热爱,奔赴星海! 2816

从首次打开到全屏歌词:Folia 四步上手指南

Folia 是一款把全屏歌词动画当作核心卖点的音乐播放器:在线播放只管听,歌词负责把画面撑满。它支持网易云、QQ 音乐、酷狗、Navidrome 自建服务器与本地音乐文件夹,覆盖在线搜索、本地库管理与歌词演出三类场景。按下面四步走完:登录一个平台听歌、把自己的音乐导进来、再按全屏键,就能用上文字 PV 效果的全屏歌词。 ## 第一次打开:3D 卡片网格主界面从哪进 启动后你看到的不是歌曲列表,

gitblog_00015的博客 352

手把手教你设计MTBF加速寿命试验:从阿伦尼斯模型到卡方计算(含Excel模板)

本文详细介绍了如何设计MTBF加速寿命试验,从阿伦尼斯模型到卡方计算,帮助工程师在合理时间内获得准确的MTBF数据。通过工业电源模块的实例演示,涵盖活化能确定、温度应力设计、样本量计算及数据记录规范,并提供Excel模板实现自动化计算,显著提升测试效率。

weixin_42563415的博客 545

grunt-casperjs 使用教程

grunt-casperjs 使用教程 项目介绍 grunt-casperjs 是一个 Grunt 任务插件,用于运行 CasperJS 脚本和功能测试。CasperJS 是一个用于 PhantomJS 的导航脚本和测试工具,简化了定义完整导航场景的过程,并提供了常用任务的高级函数和语法糖。grunt-casperjs 使得在 Grunt 构建过程中集成 CasperJS 测试变得更加容易。 项目...

gitblog_00490的博客 458

VMD分子可视化实战:5个隐藏技巧让你的科研图像秒变顶刊级别

本文深入探讨了VMD分子可视化软件在科研图像美化中的5个高阶技巧,旨在帮助研究者将分子结构图提升至顶刊级别。内容涵盖原子色彩与材质的艺术化定制、沉浸式分子环境构建、专业构图与视角控制、数据驱动的动态可视化以及自动化工作流建立,通过精细的色彩映射、光照调整、周期性边界展示和脚本自动化,显著增强图像的科学叙事性与视觉冲击力。

weixin_29240343的博客 421

Cesium 相机操作

Cesium 提供了三种方式对相机的位置进行摆放。

虎康的博客 2590

casperjs小结

官网http://casperjs.org/ 环境: [dongsong@localhost ~]$ casperjs --version 1.0.0-RC2 [dongsong@localhost ~]$ phantomjs --version 1.7.0 1.casperjs按照start()、then*()、wait*()、open()等流程往下做导航(注意,如果有

鸟窝 1万+

扩散模型实战:从零开始训练手写数字生成模型

手写数字的数据集是绝大部分炼丹师的深度学习初恋,这篇博客以代码为主,手把手带读者搭建一个基于扩散模型的手写数字生成模型,非常适合刚接触扩散模型的初学者学习。

沉迷单车的追风少年 1914

CasperJS 开源项目教程

CasperJS 开源项目教程 1、项目介绍 CasperJS 是一个开源的导航脚本和测试工具,用于 PhantomJS 和 SlimerJS。它提供了一个简单而强大的 API,使得编写自动化测试和抓取网页变得更加容易。该项目由 magento-hackathon 组织维护,主要用于 Magento 平台的自动化测试。 2、项目快速启动 安装依赖 首先,确保你已经安装了 PhantomJS 和 C...

gitblog_00098的博客 478

时空智友企业信息管理系统任意文件读取漏洞复现

时空智友企业信息管理系统是一个用于企业流程管理和控制的软件系统。它旨在帮助企业实现流程的规范化、自动化和优化,从而提高工作效率、降低成本并提升管理水平。时空智友企业信息管理系统存在任意文件读取漏洞,攻击者可以在未授权的情况下读取系统上的文件。没有人规定,一朵花一定要成长为向日葵或者玫瑰。

The current road is different, love needs to distinguish between right and wrong 971

9.6华为OD机试真题 新系统 - 少儿爬山闯关积分游戏 (Java/Py/C/C++/Js/Go)

2026 华为OD机试真题9月6日华为OD上机新系统考试真题 100 分题型。

算法大师! 859

JavaScript-CasperJs使用教程

如果是类似12306这种网站的话, 必须使用--ssl-protocol=any --ignore-ssl-errors=true选项, 例如   casperjs --ssl-protocol=any --ignore-ssl-errors=true crawler.js 可以尝试这两个方法:1)忽略SSL错误 --ignore-ssl-errors=yes,可以解决大多问题。2)修改SSL...

weixin_34008784的博客 205

基于深度学习的柠檬等级检测系统 —— YOLOv8 + UI界面 + 数据集

本项目的目标是构建一个柠檬等级检测系统,通过深度学习模型自动检测柠檬的等级。自动检测柠檬等级:通过图像中的柠檬特征,自动判断其成熟度和质量。实时视频检测:通过摄像头实时监控柠檬的质量等级。用户友好的UI界面:为用户提供简洁直观的操作界面,支持图像上传、实时视频检测等功能。本项目展示了如何基于YOLOv8模型开发一个柠檬等级检测系统,结合PyQt5实现了用户友好的UI界面。通过该系统,用户可以快速上传柠檬图像并自动识别其等级,极大提升了检测效率和准确性。数据集的扩展。

YOLO 1112

自动化测试工具小记:node + SpookyJS + CasperJS + PhantomJS

概述 这是一个跨度很广的小记哦,使用node作为脚本,涵盖了三个工具:PhantomJS、CasperJS、SpookyJS。目前网上相关的资料比较少,请关注乱炖,我会断断续续更新。 那这三个工具有什么用呢,网上比较专业的说法是:“前端自动化测试工具”,通俗点来说就是一个“没有UI界面的终端浏览器”;如果完整的来看,他应该是NSCP(我个人写的简称,即:node + SpookyJS + C...

iteye_19238的博客 458

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

浏览器自动化测试初探 - 使用phantomjs与casperjs

收录待用,修改转载已取得腾讯云授权作者:yangchunwen首先要解释一下为什么叫浏览器自动化测试,因为本文只关注发布后页面功能的自动化测试,也就是UI层面的自动化。浏览器测试有别于js代码的单元测试,后者一般是发布前的代码功能逻辑测试,在这方面已经有很多比较成熟的方案,如jasmine mocha Qunit…为什么要做自动化个人认为自动化测试的主要出发点有两点: 减少重复的工作。让机器自动帮我

qq_38391495的博客 564

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

casperjs mysql_casperjs,phantomjs,slimerjs and spooky

1、casperjshttp://casperjs.org/CasperJSis a navigation scripting & testing utility forPhantomJSandSlimerJSwritten in Javascript网站截图小例子:http://type.so/linux/casperjs-capture-nice.html,提到中文显示问题...

weixin_39867509的博客 132

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

CasperJS实战入门:从安装到第一个测试脚本

本文详细介绍了CasperJS的完整安装流程、基础语法和核心功能。从环境搭建开始,涵盖不同操作系统下的多种安装方式,包括npm、Git源码、Homebrew和压缩包安装。接着深入讲解CasperJS的基础语法结构、导航步骤定义方法,以及表单填写、链接点击等核心交互操作。最后重点演示了页面截图功能和DOM断言实践,为编写完整的自动化测试脚本提供全面指导。 ## CasperJS环境搭建与安装指南 ...

gitblog_00117的博客 790

CasperJS深度解析:导航脚本与测试工具的终极指南

CasperJS是一款强大的导航脚本和测试工具,专为PhantomJS和SlimerJS设计。虽然该项目目前已不再积极维护,但它在Web自动化测试领域留下了深远影响,至今仍被许多开发者用于页面交互模拟、自动化测试和数据抓取等场景。本文将带你全面了解CasperJS的核心功能、使用方法和实际应用案例,帮助你快速掌握这一工具的精髓。 ## 什么是CasperJS? CasperJS是一个基于Pha

gitblog_00565的博客 792

CasperJS 介绍以及Windows上安装介绍

1 介绍 CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS(前端自动化测试工具)编写。CasperJS简化了完整的导航场景的过程定义,提供了用于完成常见任务的实用的高级函数、方法和语法。 用于测试 Web 应用功能,Phantom JS是一个服务器端的 JavaScript API 的 WebKit。其支持各种Web标准: DOM 处理, CSS 选择器, J

Kandy 7004

PhantomJS 使用指南

PhantomJS 是一个无头浏览器,它提供了Web浏览器环境下运行的JavaScript API。它基于Qt WebKit,可以用来进行自动化测试、网页抓取、页面渲染等任务。由于PhantomJS具备完整的浏览器环境,它成为了前端自动化测试和网页爬虫的理想选择。 ## 2. 项目快速启动 ### 安装 首先,确保您的系统中已经安装了Node.js。接下来,使用npm(Node.js的包管理...

gitblog_00447的博客 534

Resurrectio:终极Chrome测试录制工具 - 5分钟快速入门指南

Resurrectio是一款强大的Chrome扩展程序,专为简化测试流程而设计,它能录制浏览器操作并自动生成对应的CasperJS脚本。这款工具采用功能导向的选择器,确保录制的测试序列在页面布局和设计变化时依然保持有效,特别适合前端开发者和测试工程师使用。 ## 🌟 核心功能亮点 Resurrectio不仅仅是简单的操作录制工具,它还具备以下特色功能: - **JavaScript支持**

gitblog_00145的博客 770

Resurrectio与PhantomJS集成:无头浏览器测试最佳实践指南 [特殊字符]

Resurrectio是一款功能强大的Chrome扩展,专门用于录制浏览器操作并生成CasperJS测试脚本,与PhantomJS无头浏览器完美集成,为Web自动化测试提供了完整的解决方案。这款工具让无头浏览器测试变得更加简单高效,特别适合前端开发者和测试工程师使用。 ## 为什么选择Resurrectio进行无头浏览器测试? Resurrectio的核心优势在于其**功能导向的选择器**和*

gitblog_00720的博客 756

CasperJS

概述         项目组有个网络爬虫的需求,Java有个爬页面的Jsoup,虽然可以一定程度上借助cookie,sessionId,TCP/IP通信等相关实现一定程度上的模拟浏览器行为,但作为服务器开发语言,在前端交互上,显然不能挥洒自如.老大推荐了CasperJs,同事在搞,顺便也偷喵的学习下.       CasperJs 是一个开源的导航脚本处理和测试工具,基于PhantomJS(前

qq_33854869的博客 1327

前端自动化测试工具:SlimerJS、phantomJS 和 CasperJS

对于富客户端的 Web 应用页面,自动登录、页面修改、抓取页面内容、屏幕截图、页面功能测试…面对这些需求,使用后端语言需要花费不少的精力才能实现。此时 SlimerJS、phantomJS 或 CasperJS 或许是更好的一种选择。 一、PhantomJS 和 SlimerJS PhantomJS 和 SlimerJS 都是服务器端的 JavaScript ...

weixin_30563319的博客 292

[CasperJS] 安装

百度百科说:CasperJS是一个开源的导航脚本处理和测试工具,基于PhantomJS(前端自动化测试工具)编写。CasperJS简化了完整的导航场景的过程定义,提供了用于完成常见任务的实用的高级函数、方法和语法。  CsperJS功能:                      定义和整理导航步骤                     表单填充

ER_Plough的专栏 1435

casperjs,phantomjs,slimerjs and spooky

1、casperjshttp://casperjs.org/ CasperJSis a navigation scripting & testing utility forPhantomJSandSlimerJSwritten in Javascript 网站截图小例子:http://type.so/linux/casperjs-capture-nice.html,提到中文...

weixin_34413065的博客 264
上一篇: PHP爬虫最全总结2-phpQuery,PHPcrawer,snoopy框架中文介绍
下一篇: 前端自动化测试工具--使用karma进行javascript单元测试
TechFE
博客等级 码龄12年 176粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值