微禾游戏 手游攻略 手游评测 Puppeteer 自动化测试梦想之旅(三)

Puppeteer 自动化测试梦想之旅(三)

时间:2024-12-12 10:39:13 来源:其他 浏览:0

一、前言

2.PageObject设计模式

3.Mocha测试框架

1. 安装

2. 示例脚本

3. 挂钩功能

4.修改脚本

1. 自定义您的浏览器

2.改进用例脚本

3.所有项目文件概览

4. 执行测试脚本

5. 系列总结

一、前言

在第二篇文章中,我们介绍了如何在51testing论坛网站(http://bbs.51testing.com)上完成一个自动发帖测试脚本。所以在这第三篇文章中,也是整个《Puppeteer自动化测试简易入门教 程》系列的最后一篇文章,我们将结合PageObject设计模式和Mocha测试框架,让这个脚本更加模块化和结构化,使其成为真正的自动化测试。工程项目。

2.PageObject设计模式

页面对象模型是自动化测试领域最著名的工程设计模式。最早的概念是由Selenium 项目提出的。

Purpose的创始人之一Simon Stewart于2006年提出,此后被广泛应用于几乎所有的自动化测试项目中。可见,软件测试领域的工程师对这种设计模式的认可程度很高。 PO模型的介绍网上可以找到无数,这里就不浪费篇幅了。

我们的项目采用PO设计模式后,具体的定位元素和测试数据将不会出现在用例脚本中。它们将被分类并存储在相应的页面文件中。在编写不同的用例脚本时我们应该使用哪些元素?或者直接找到相关的页面文件,从数据中调用,这样我们的定位元素和测试数据就可以复用和等价

易于维护。

我们以第二篇文章中写的一个场景为例:登录功能。我们登录的步骤一般是输入用户名

+ 密码,然后点击【登录】即可完成。然后我们就可以将【用户名】输入框、【密码】输入框和【登录】按钮这三个定位元素写入一个名为LoginPage.txt的文件中。如果是用户数据的话,一般可以写在这个文件中。有人会新建一个TestData目录进行存储,这样定位元素和测试数据就可以相互隔离。

//loginPage.js locators: {

usernameInputCss: '#ls_username',passwordInputCss: '#ls_password',

loginBtnCss: '按钮[type='提交'].pn.vm', nameTextCss: '.vwmy',

logoutBtnCss: '#um p:nth-child(2) a:last-child',

logoutMsgCss: '#messagetext',

},

测试数据: {

url: 'http://bbs.51testing.com',

用户名: '蒂诺',

密码:'xxx',

}

Puppeteer 自动化测试梦想之旅(三)

//测试用例.js

等待page.type(homePage.locators.usernameInputCss,

homePage.testData.username);//输入用户名

等待page.type(homePage.locators.passwordInputCss,

homePage.testData.password);//输入密码

wait page.click(homePage.locators.loginBtnCss);//点击【登录】按钮

wait page.waitForSelector(homePage.locators.nameTextCss);//验证是否登录成功

三、Mocha测试框架

Mocha 是一个JavaScript 测试框架。它相当于Python世界中的Unitest和Java世界中的JUnit。不过后两者已经集成到各自的语言中,需要安装Mocha。其实JS的测试框架有很多。除了Mocha之外,还有Jest、Jasmine、CasperJS等,这里介绍Mocha是因为其语法简洁、风格优雅,让我们更容易学*。

1. 安装

在项目目录下执行npm install mocha 安装或者npm install --global mocha 全局安装,这里

我建议全局安装,这样运行测试用例脚本时就可以直接编写mocha xxx.js,无需指定路径。

2. 示例脚本

官网(https://mochajs.org/#getting-started)的示例脚本如下:

var 断言=require('断言');描述('数组',函数(){

描述('#indexOf()',函数(){

it('当值不存在时应该返回-1', function() { assert.equal([1, 2, 3].indexOf(4), -1);

});

});

});

第一行代码引入了Node.js自带的断言库,但是Mocha支持任何第三方断言库。下载您最喜欢的断言库并将其导入以在脚本中使用它:

第二行以示例脚本的文本开头。 describe() 指的是测试套件,单引号中的包名称是套件名称。 it() 引用测试用例,用例名称用单引号引起来。 describe()也可以嵌套在describe()内部,并且it()可以并行多个,这意味着测试套件中有多个测试用例。如果describe()中只有一个it(),套件名和用例名基本可以写成一样。最后一行代码是断言语句。

3. 钩子函数

Mocha 有4 个钩子函数:before()、after()、beforeEach() 和afterEach()。从名字上就可以看出,它们的功能和Unitest中的setUp和tearDown是一样的。它们用于测试用例执行执行预操作

和清理操作,我们看一下官方的说明:

4.修改脚本

了解了PO 设计模式和Mocha 框架后,接下来我们将对上一篇文章中使用的51testing 论坛网站(http://bbs.51testing.com)测试脚本进行改造,只不过我去掉了发帖用例,换成了注销用例。这使得代码更简单。

1. 自定义您的浏览器

这里我新建了一个名为browser.js 的文件,在其中我自定义了两个不同大小的浏览器,一个是默认大小,另一个是最大化大小。我可以调用任何一个在用例脚本中使用。这里注意方法名必须通过module.exports导出,否则在其他文件中不会被调用:

//浏览器.js

const puppeteer=require('puppeteer');

module.exports={ browser_default, browser_max

Puppeteer 自动化测试梦想之旅(三)

}//导出模块

异步函数browser_default(){

const browser=wait puppeteer.launch({ headless: false,

SlowMo: 100,可执行路径:

`C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe`

});

返回浏览器;

}

异步函数browser_max(){

const browser=wait puppeteer.launch({ headless: false,

SlowMo: 100,可执行路径:

`C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe`,

args: [

'--窗口大小=1920,1080',

],

默认Viewport: 空

});

返回浏览器;

}

2. 完善用例脚本

完善第2节中的PO文件(存储定位元素和测试数据)和测试用例脚本。注意,PO文件中的所有内容也需要导出以供调用:

//homePage.js module.exports={

定位器: {

usernameInputCss: '#ls_username',passwordInputCss: '#ls_password',loginBtnCss: '按钮[type='提交'].pn.vm',nameTextCss: '.vwmy',

logoutBtnCss: '#um p:nth-child(2) a:last-child', logoutMsgCss: '#messagetext',

},

测试数据: {

url: 'http://bbs.51testing.com', username: 'tino',

密码:'xxx',

},

断言Msg: {

logoutMsgTxt: '您已退出该站点,现在将以访客身份转移到退出前页面。请稍等. '

Puppeteer 自动化测试梦想之旅(三)

}

}

//51testing.js

const browser_max=require('./common/browser.js').browser_max;//导入自定义浏览器const homePage=require('./pageObjects/homePage.js');//导入定位元素

描述('51testing',async()={让浏览器,页面;

之前(异步()={

browser=wait browser_max();//使用最大化浏览器page=wait browser.newPage();

})

之后(异步()={

等待浏览器.close();

})

it('登录', async ()={

等待page.goto(homePage.testData.url);

等待page.type(homePage.locators.usernameInputCss, homePage.testData.username);

等待page.type(homePage.locators.passwordInputCss, homePage.testData.password);

等待page.click(homePage.locators.loginBtnCss);

等待page.waitForSelector(homePage.locators.nameTextCss);

})

it('注销', async ()={

等待page.click(homePage.locators.logoutBtnCss);

等待page.waitForSelector(homePage.locators.usernameInputCss);

})

})

3. 所有项目文件总览

4.执行测试脚本

执行前有两点需要注意:由于Mocha默认运行时间为2S,如果超过这个时间用例还没有执行,就会判断为失败,所以我们在执行命令,这里的时间单位是HS(毫秒)。另一点是Mocha将执行test目录中的测试用例脚本。我们的约定是在项目中新建一个test目录,然后将所有的测试用例脚本放入其中,这样就可以在工作目录下使用mocha命令直接运行脚本了。

以下是脚本的执行。执行之前,我将我使用的浏览器更改为默认大小的浏览器,以便大家可以轻松地在代码编辑器终端中看到一些输出信息:

我们可以看到登录和注销两个测试用例都已经执行并通过了,并且执行前后浏览器启动和关闭操作均成功执行。

5. 系列总结

连续三篇文章《Puppeteer自动化测试简易入门教程》到此结束。我们介绍了Puppeteer的安装、使用和简单应用,以及自动化测试项目涉及到的一些知识。事实上,Puppeteer在国内是一款不太受欢迎的自动化测试工具,但由于它是Google出品,所以它是目前市场上控制Chrome浏览器功能最强大的自动化测试工具。它的功能非常强大,还有很多其他高级的玩法。如果想了解更多,请前往官网(https://pptr.dev/)。另外,也是爬虫工程师的选择之一。它还具有Python 版本——Pyppeteer。会写Python的朋友可以尝试以下方法。

最后附上傀儡师的高清壁纸~祝大家玩得开心!

用户评论

反正是我

《Puppeteer》是一款让玩家沉浸在自动化测试世界中的游戏作品。

    有6位网友表示赞同!

﹎℡默默的爱

这款游戏提供了深入理解自动化测试的方法,让人沉浸其中,感受不同难度层次的乐趣。

    有10位网友表示赞同!

迁心

“自动化测试浅梦之旅”这个名字非常契合整个游戏氛围,它仿佛引领玩家穿越梦境般的抽象世界里探索科技和代码的奥妙。

    有9位网友表示赞同!

月下独酌

对于技术爱好者和计算机科学学生来说,《Puppeteer》不仅是一个娱乐品,更是一本活生生的教程,用互动方式讲解自动化测试的概念。

    有19位网友表示赞同!

清羽墨安

游戏中充满了对细节的精心设计,每一个环节都恰如其分地展示了自动化测试的关键点,让玩家有深刻的体验感。

    有8位网友表示赞同!

墨城烟柳

“自动测试的世界是如此独特”,玩家被引入一个全新的角色扮演体系——在这里,每个人都可以成为一名自动化测试专家。”

    有6位网友表示赞同!

巴黎盛开的樱花

通过游戏《Puppeteer》,人们学会了如何编写有效且精简的代码,用于自动化重复性任务,从而提高了效率和成果质量。

    有17位网友表示赞同!

棃海

“游戏过程中的挑战令人兴奋”,玩家在解决问题的同时也锻炼了他们的逻辑思维能力.

    有20位网友表示赞同!

冷落了♂自己·

该系列游戏第三集更侧重于深入理解测试框架和自动化工具的应用,在乐趣中探索新的知识领域。

    有19位网友表示赞同!

颜洛殇

每个场景都以有趣的方式描绘出软件测试的过程,使得枯燥的技术信息变得生动有趣。

    有5位网友表示赞同!

青瓷清茶倾城歌

通过游戏的剧情发展,《Puppeteer》让人们体会到了“自动化测试”的力量如何在现实中改善我们的工作流程和代码质量。

    有12位网友表示赞同!

oО清风挽发oО

《Puppeteer》不仅仅是一个游戏,“浅梦之旅”让人沉浸其中,在挑战与探索中学*到自动化测试的重要性

    有13位网友表示赞同!

刺心爱人i

玩家反馈显示,这款游戏既适合作为教育工具,也提供了放松的娱乐方式,将科技学*融入轻松的游戏体验之中。

    有14位网友表示赞同!

蹂躏少女

角色的多样性和每个任务的独特性使得游戏过程充满惊喜和新鲜感,让玩家乐此不疲地探索每一个细节。

    有5位网友表示赞同!

浮世繁华

《Puppeteer》三集系列以其创新的故事讲解、详实的角色发展和对测试流程的深入演绎赢得了广泛的赞誉。

    有7位网友表示赞同!

良人凉人

这款游戏通过寓教于乐的方式,提高了公众对自动化测试认识的兴趣,同时也激发了人们对技术领域的探索热情。

    有10位网友表示赞同!

别悲哀

在“自动化测试浅梦之旅”中,玩家不仅感受到了游戏带来的乐趣,还学会了宝贵的测试技能和思维模式。

    有18位网友表示赞同!

墨染年华

从游戏反馈来看,《Puppeteer》已经成为了推动自动化测试教育普及的重要工具之一。

    有9位网友表示赞同!

走过海棠暮

“浅梦之旅”的系列特色让每个人都能从中找到自己的兴趣点,并在这个过程中掌握了自动化测试的核心概念和应用技巧。

    有5位网友表示赞同!

清原

对于《Puppeteer》系列中的第三集,玩家最常提及的是它的高互动性和沉浸度,游戏将技术知识的传授变成了一个令人着迷的游戏冒险。

    有12位网友表示赞同!

全网暗恋者

通过玩这款游戏,不仅加深了对自动化测试的理解,同时也培养了解决问题和提高代码效率的能力。

    有5位网友表示赞同!

一样剩余

“一次深奥的视觉和技术探索之旅”,《Puppeteer》第三部充分展示了游戏设计师对教育内容与娱乐融合的独特理解。

    有10位网友表示赞同!

标题:Puppeteer 自动化测试梦想之旅(三)
链接:https://www.52funs.com/news/sypc/29302.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
《向僵尸开炮》那些质变技能的前置词条具体内容详解!有最新礼包码!

估计大部分宝子们和小猪一样,在局内选择词条的时候,只看词条的具体内容不看词条的名称,那么本期就给宝子们整理

2024-12-12
DNF手游:第二套天空套来袭!动图展示!这里面有你喜欢的吗?

截止到目前韩服dnf手游一共上线了4套天空套 而国服目前仅上线了第一套”冥域天空“ 按照韩服的时间线,国服的

2024-12-12
人与动人物xxxx在线视频,人与动物:共生的世界

人与动物:共生的世界 在我们的生活中,有许多时候我们会被动物所吸引,无论是它们的可爱、勇敢还是聪明。我们

2024-12-12
黑神话悟空抢先版:吉吉国王成天命人?到底是怎么回事?

黑神话悟空竟然有抢先版?不仅有!而且作者还在不断更新,但是游戏和黑神话有什么关联呢?真正进游戏一探究竟的玩家

2024-12-12