用CasperJs自动浏览页面

53、运行整个视觉回归测试套件 本文详细介绍了如何通过PhantomJS和CasperJS运行完整的视觉回归测试套件,以确保前端设计系统中各个组件和布局在不同状态下的视觉一致性与稳定性。文章涵盖了从环境配置、页面导航、截图生成、交互模拟到与基线图像对比的完整流程,并展示了如何将测试集成到CI/CD流程中,提升开发效率和产品质量。 阅读详情

CasperJs是一个基于PhantomJs的工具,其比起PhantomJs可以更加方便的进行navigation。


一个最简单的CasperJs代码

创建一个文件baidu.js,用来模拟我们访问百度页面

var casper = require('casper').create();

casper.start('http://www.baidu.com/', function() {
   this.echo(this.getTitle());
});

casper.run();


运行:

casperjs baidu.js

得到输出:

“百度一下,你就知道”


一个第二简单的CasperJs代码

CasperJs的执行脚本是由一个一个的Step串联起来的。start表示第一步,然后后面的step用then来表示,再依次执行:

var casper = require('casper').create();

casper.start('http://www.baidu.com/', function() {
   this.echo(this.getTitle());
});

casper.then(function() {
   this.capture('baidu-homepage.png');
})

casper.run();


完成以后,我们会在Console上得到一个title,同时我们也会得到在then中捕捉到的图片baidu-homepage.jpg


一个第三简单的CasperJs代码

我们想办法让CasperJs完成搜索功能:

var casper = require('casper').create();

casper.start('http://www.baidu.com/', function() {
   this.echo(this.getTitle());
});

casper.then(function() {
   this.capture('baidu-homepage.png');
});

casper.then(function() {
   this.fill('form[action="/s"]', { wd: 'thoughtworks' }, true);//填入form,进行搜索
});

casper.then(function() {
   this.capture('thoughtworks-search-results.png');
});

casper.run();


得到的thoughtworks-search-results.png:





怎么引入jQuery

有些时候,还是jQuery来得方便

var casper = require('casper').create({
   clientScripts: ["jquery.js"]
});

casper.start('http://www.baidu.com/', function() {
   this.echo(this.getTitle());
});

casper.then(function() {
   this.fill('form[action="/s"]', { wd: 'thoughtworks' }, true);
});

casper.then(function() {
   search_result_titles = this.evaluate(getTitles)
   this.echo(search_result_titles.join('\n'))
});

function getTitles() {
   var titles = $.map($("h3.t a"), function(link) {
      return $(link).text()
   });
   return titles
}

casper.run();


返回结果:

thoughtworks_百度百科
成都Thoughtworks-招聘专员--地点:成都招聘信息|ThoughtWorks招聘...
敏捷开发和体验设计 | ThoughtWorks
thoughtworks基本情况及待遇 【懦夫救星_职场古拳法】
和Thoughtworks的一次邂逅(一) - redhat - ITeye技术网站
thoughtworks笔试整理zz_ThoughtWorks招聘经验
关于我们 | ThoughtWorks
ThoughtWorks位列面试难度最高的科技公司之首_百度文库
透明的相册-ThoughtWorks西安办公室
思特沃克软件技术(西安)有限公司ThoughtWorks Software ...


需要注意的地方:

1)create casper的时候,我们inject了jquery,这个jquery必须是保存在本地的,通过HTTP访问是无效的。

2)this.evaluate(getTitles)可以理解成,我们在CasperJs中,将getTitles这个方法注入到了访问的页面中,在访问的页面中执行这个方法并反问其返回值。

3)访问页面log的获取:2)中讲到了getTitles其实是在被访问页面中执行的,如果我们在getTitles加入一段console.log的代码话,怎么能够得到被访问页面的console信息呢?

casper.then(function() {
   this.page.onConsoleMessage = function(e) {
      console.log(e);
   }

   search_result_titles = this.evaluate(getTitles)
   this.echo(search_result_titles.join('\n'))
})

这样就可以侦听被访问页面的console.log事件,比导出到CasperJs中


参考:http://docs.casperjs.org/en/latest/faq.html#can-i-use-jquery-with-casperjs



图神经网络与大模型融合的理论综述:架构、机制与未来方向 然而,它们普遍缺乏对图结构数据的原生支持,无法直接处理边、节点之间的拓扑关系,这限制了其在关系密集型任务中的表现 [23]。2020年发布的BERT [16] 开启了自监督预训练时代,而2021年后,T5 [17]、PaLM [18]、LLaMA [19] 等模型相继推出,参数规模突破千亿级,展现出惊人的上下文学习(In-context Learning)与链式推理(Chain-of-Thought)能力 [20]。例如,将医学影像作为图节点,结合病理报告文本,实现更精准的疾病诊断 [58]。 阅读详情

相关推荐

Anomalib实战:从零开始构建自定义数据集的异常检测模型

本文详细介绍了如何使用Anomalib 2.1.0从零开始构建自定义数据集的异常检测模型。通过实战演示,指导读者准备符合规范的数据集结构,快速上手训练Patchcore等先进算法,并完成模型推理与调优,为工业质检、医疗影像等场景提供高效的视觉异常检测解决方案。

weixin_29165465的博客 109

casperjs(二)----实战测试

安装完成后,我们就可以进行实战测试了,至此我们就可以使用casperjs和phantomjs来编写脚本进行测试了。话说回来,我当时之所以要学习casperjs是因为我发现通过phantomjs无法完成很多简单的事情,包括点击一个按钮(这里拿baidu做为例子):// JavaScript source code var page = require('webpage').create(); var

hacker_Lees的博客 882

iPhone用户必看:不装App也能搞定GitHub 2FA验证的3种方法(附恢复码管理技巧)

本文为iPhone用户提供了无需安装第三方App即可完成GitHub双重身份验证(2FA)的三种原生方案:利用相机扫码与iCloud钥匙串自动填充、使用iCloud钥匙串内置的TOTP验证码生成器,以及借助Safari浏览器扩展。文章详细解析了每种方法的操作步骤、适用场景,并重点强调了恢复码的安全管理与多层备份策略,帮助开发者在提升账户安全的同时,享受苹果生态的无缝便捷体验。

weixin_29324401的博客 653

[译文]casperjs 的API-casper模块

Casper class: 可以通过这个模块的create()方法来获取这个模块的一个实例,这是最容易的: var casper = require('casper').create(); 我们也可以通过实例化主方法的方式获得一个自身的实例: var casper = new require('casper').Casper(); 提示: 如果扩展casper类,后面的...

weixin_30919429的博客 872

【昇腾】用MindIE(服务化方式)拉起glm4-9b-chat模型问题解决

【昇腾】用MindIE拉起glm4-9b-chat模型问题解决: LLMInferEngine failed to init LLMInferModels ERR: Failed to init endpoint! Please check the service log or console output. Killed make sure the folder's owner has execute permission.

u014448841的博客 5116

innovus:insert Power Switch失败,报告not covered by a row问题解析

这个问题就是switch找不到可以放置的row,分析就从两方面入手,一方面从voltage area下手,一方面从row和site入手。检查发现voltage area设置正确,row也存在,只不过lef里缺少对应switch的双倍高的site。更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1158

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

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

qq_38391495的博客 564

我用 Python 把 Claude 变成了 “代码审查员“:每次提交前 AI 先 Review,Bug 漏网率降了 80%

这是成败的关键。我们需要给 Claude 立规矩,让它像一个严格的架构师那样思考。你是一名资深的首席软件架构师和安全专家。请审查以下 Git Diff 代码变更。你的任务是:1. **安全性检查**:寻找 SQL 注入、XSS、硬编码密钥、敏感信息泄露等。2. **潜在 Bug**:空指针、资源未关闭、竞态条件、逻辑死循环。3. **代码质量**:命名规范、冗余代码、可读性差、缺乏注释。4. **性能优化**:不必要的数据库查询、低效算法。

BUG猿的博客 142

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万+

网络速度的极致:800G & 1.6T 以太网的突破!

你好,这里是网络技术联盟站。在我们进入数据驱动的世界时,以太网的重要性日益突出。从根本上说,以太网是一种连接计算机的技术,旨在形成一个本地网,通过它,设备可以与其他设备进行通信。然而,随着时间的推移,以太网已经发展成为一种全球的数据通信系统,其速度从初始的10Mbit/s发展到现在的800G,甚至1.6T。这种巨大的进步并不是没有挑战的,但每一次的突破都代表了技术的巨大飞跃。本文将探讨800G和1.6T以太网的创新与挑战。

网络技术联盟站 1769

135、高通 ChromaTix 调优工具入门:参数含义、调优流程与效果对比

本文介绍了高通ChromaTix色彩调优工具的核心使用要点:1. ChromaTix是位于ISP管线中的色彩处理系统,核心任务是将原始色彩映射为符合人眼感知的"舒适"效果;2. 重点解析了饱和度、色调、亮度相关饱和度等关键参数的实际含义和调试陷阱;3. 分享了四步调优流程,强调需要基于多场景数据验证;4. 通过案例展示了参数调整带来的色彩改善效果;5. 总结了实用建议,包括保持单一变量调试、量化评估色差、关注极端场景表现等。文章指出ChromaTix调优是平衡不同场景需求的"妥协艺术",需要结合客观数据和主

sundong_81的博客 106

casperjs接收外部参数,以及读取本地文件

phantom.outputEncoding="gb2312"; // 设置字体 var hotelId = casper.cli.get(0); //获取参数 var startDate = casper.cli.get(1); // 读取文件 function readFile(file,findCount,th,fsObj){ var json = ''; try { th.ech

lovlin_l的代码世界 727

基于STM32的智能手环心率血氧体温监测系统(完整设计)

本文设计了一款基于STM32单片机的多功能智能手环系统,集成心率、血氧、体温实时监测功能,并支持运动数据管理与健康预警。系统采用MAX30102传感器实现心率血氧监测,DS18B20检测体温,ADXL345进行步数统计,通过OLED屏幕显示数据。研究通过低功耗硬件选型与模块化软件架构设计,实现了多参数同步采集、阈值预警及蓝牙数据传输功能。测试结果表明,系统在健康监测精度、续航能力及用户交互体验上均达到预期目标,为个人健康管理提供了实用解决方案。

3254968421的博客 701

用CasperJs自动浏览页面(转)

内容转自http://blog.youkuaiyun.com/kiwi_coder/article/details/36248353 CasperJs是一个基于PhantomJs的工具,其比起PhantomJs可以更加方便的进行navigation。 一个最简单的CasperJs代码 创建一个文件baidu.js,用来模拟我们访问百度页面 var casper = require('caspe...

weixin_30670925的博客 92

IEM模型,地表粗糙度模拟

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

CasperJS:一款强大的浏览器自动化测试工具

CasperJS是一款基于Node.js的开源库,用于实现自动化脚本操作。通过模拟用户行为、交互网页元素和抓取网页内容等功能,CasperJS使得开发者能够更轻松地进行网站的自动化测试与爬虫开发。 ## CasperJS能用来做什么? 1. **自动化测试**:CasperJS可以帮助您创建可执行的端到端测试案例,确保您的网页应用程序在不同的场景下表现正常。 2. **页面截图**:您可以使用...

gitblog_00039的博客 577

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Casperjs

Casperjs基于Phantomjs Phantomjs是一个Headless(无显示的)浏览器脚本。 至少可以做 无显示浏览器测试 截屏 自动操作页面 页面监视 然而Phantomjs依然有一点不好用。Phantomjs也重点推荐了Casperjs 参考: http://phantomjs.org/best-practices.html这个就非常好用了 完全的Promise写法让你简单的

more time 773

萌萌CasperJS第1篇 1分钟写完爬虫 拿亚马逊商品数据

Q: 私ねえ, Qです,よろしくお願いしますよ (我呀, 是小Q,请多多关照) A: 我是 啊叁锅米 Q: 原来是 阿三呀, 最近行情不好,跑cn来啦呀 A: ...... Q: 今天弄啥东东? A: 小爬虫 Q: 做啥子哩 A: 爬爬AMAZON 的书价 Q: 为啥虫子要爬 AMAZON, 不吃树叶 A: ......

啪嗒啪嗒的迈着步子 2万+

phantomJS 、casperjs

casperjs运行原理

江东小霸王 896

casperjs 知乎登陆

phantom.casperTest = true; phantom.outputEncoding="utf-8"; var fs = require('fs'); var casper = require('casper').create({ // pageSettings: { // loadImages: true, ...

dianyin7770的博客 163

关于casperjs的wait方法的执行顺序

var casper = require('casper').create({ viewportSize:{ width:1920, height:1080 } }); var url1 = 'http://jifen.yuyid.com'; var url2 = 'https://www.yuyid.com'; casper.start();...

weixin_34343308的博客 128

casperjs模拟登录-驾校登录

varcasper=require('casper').create({ clientScripts:["jquery.js"], pageSettings:{ //userAgent:'Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Win64;x64;Trident/5.0...

weixin_33836874的博客 307

casper Dom的操作

phantom.casperTest = true; phantom.outputEncoding="utf-8"; var casper = require('casper').create({ // pageSettings: { // loadImages: true, // loadPlugins: false // }, logLevel: "info"...

dianyin7770的博客 106

终极指南:CasperJS无头浏览器高级特性与渲染优化 [特殊字符]

CasperJS是一个强大的无头浏览器脚本工具,专为PhantomJS和SlimerJS设计,提供完整的导航脚本编写和自动化测试功能。这个开源工具让开发者能够轻松创建复杂的网页交互脚本、自动化测试套件和网络爬虫,特别适合需要模拟真实用户行为的场景。本文将深入探讨CasperJS的高级特性,帮助您充分利用这个工具的强大功能。 ## 为什么选择CasperJS进行无头浏览器测试? 🤔 Caspe

gitblog_00580的博客 681

Casperjs循环执行(重复执行不退出)

我们知道,casperjs执行任务的时候最终是要退出的。那么如何让它(隔一段时间)重复的执行一个相同的行为呢。如果你按我们平时的js循环思维去写,你肯定会失败,达不到预期的效果。 参考写法: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

Ryan Z 的技术日志 2409
上一篇: 刻意练习--Rails RESTful(一)
下一篇: 用expressjs写RESTful API
kiwi小白
博客等级 码龄14年 153粉丝 154原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值