Puppeteer自动化测试cnode.js中文社区
如果完全不了解puppeteer的朋友可以去看看我的这篇随笔:https://www.cnblogs.com/zlforever-young/p/11569890.html
开始之前需要了解的知识:ES6和ES7语法,TypeScript基础。
√01准备TypeScript环境
听说TypeScript可以大大提高开发效率,所以这次咱顺便也捣鼓捣鼓。
1.全局安装:npm install -g typescript
2.安装映射文件:npm install @types/node --save-dev npm install @types/puppeteer --save-dev
3.在工作目录输入 tsc --init 初始化TypeScript
4.在生成的tsconfig.json下根据实际情况修改配置:一般需手动配置ES语法版本,编译输出路径和源码路径。
5.编译文件使用tsc
√02puppeteer项目练习-用户注册登录功能
代码:
/*
用户操作:
1.注册:register
2.登陆:login */ import config from './../config';
import { Page, Browser, launch } from 'puppeteer'; export default class userActions{ /*用户注册测试方法*/
public async register(page:Page,username:string,password:string,repassword:string,email:string){
await page.goto(config.url);
let registerBtn= await page.waitForSelector('a[href="/signup"]');
await registerBtn.click(); let inputUserName= await page.waitForSelector('input[id="loginname"]');
await inputUserName.type(username); let inputPassWord= await page.waitForSelector('input[id="pass"]');
await inputPassWord.type(password); let inputRePwd= await page.waitForSelector('input[id="re_pass"]');
await inputRePwd.type(repassword); let inputEmail= await page.waitForSelector('input[id="email"]');
await inputEmail.type(email); let submit=await page.waitForSelector('input[type="submit"]');
await submit.click(); } /*用户登陆测试方法*/
public async login(page:Page,username:string,password:string){
await page.goto(config.url); let loginBtn=await page.waitForSelector('a[href="/signin"]');
await loginBtn.click(); let userName=await page.waitForSelector('input[id="name"]');
// console.log(username);
await userName.type(username); let pwd=await page.waitForSelector('input[id="pass"]');
// console.log(password);
await pwd.type(password); let submit =await page.waitForSelector('input[type="submit"]');
await submit.click();
}
}
√03puppeteer项目练习-发布话题功能
代码:
import { Page } from 'puppeteer';
export default class Topic{
public async postTopic(page:Page,part:string,title:string,content:string) {
const postBtn= await page.waitForSelector('span[class="span-success"]');
await postBtn.click();
await page.waitFor(3*1000);
await page.select('#tab-value',part);
const postTitle=await page.waitForSelector('#title');
await postTitle.type(title);
const postContent=await page.waitForSelector('div[class="CodeMirror-scroll"]');
await postContent.click();
await page.keyboard.type(content);
const postSubmit= await page.waitForSelector('input[type="submit"]');
await postSubmit.click();
}
}
演示:

Puppeteer自动化测试cnode.js中文社区的更多相关文章
- 【干货分享】Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- node.js中文资料导航 Mark
Node.js HomePage Infoq深入浅出Node.js系列(进阶必读) Node.js中文文档 被误解的 Node.js Node.js C++ addon编写实战系列 热门node.js ...
- 【干货分享】Node.js 中文资料导航
这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...
- node.js中文资料导航
以下资料来自gitHUb上面:https://github.com/youyudehexie/node123 Node.js HomePage Node官网七牛镜像 Infoq深入浅出Node.js系 ...
- Node.js 中文学习资料和教程导航
这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...
- GitHub中文社区
今天在打开GitHub的时候,使用了bing.com搜索,输入GitHub进行搜索链接,排名第一的为GitHub中文社区,点击去发现这个社区还可以,我们看看GitHub中文社区有哪些好的地方 GitH ...
- [转载]fullPage.js中文api 配置参数~
fullPage.js中文api 配置参数 选项 类型 默认值 说明 verticalCentered 字符串 true 内容是否垂直居中 resize 布尔值 false 字体是否随着窗口缩放而缩放 ...
- JS.中文乱码,Jsp\Servlet端的解决办法
JS.中文乱码,Jsp\Servlet端的解决办法 2010-03-08 15:18:21| 分类: Extjs | 标签:encodeuricomponent 乱码 urldecoder ...
- neo4j中文社区
关于Neo4j中文社区 官网:http://neo4j.com.cn/ Neo4j 社区为国内具影响力的 Neo4j技术社区,致力于 Neo4j 的技术研究. Neo4j 社区由一批热爱 Neo4j ...
随机推荐
- docker--数据持久化之Data Volume
使用mysql为例 查看docker hub官方的mysql image 的dockerfile,有这一行:VOLUME /var/lib/mysql -v给volume创建别名 [root@loca ...
- 关于sizeof的几个问题
#include <stdio.h> #include <stdlib.h> int main(int argc, char const *argv[]) { char *ps ...
- js 基础 for in 和 for of的区别详解
for in 和 for of 相对于大家肯定都不陌生,都是用来遍历属性的没错.那么先看下面的一个例子: 例1 const obj = { a: 1, b: 2, c: 3 } for (let i ...
- Java面试宝典(3)Java基础部分
51.启动一个线程是用run()还是start()? . 启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个线程必须关联一些具体的执行代码,run()方法是该线程所关 ...
- docker镜像仓库
搭建私有镜像仓库 Docker Hub作为Docker默认官方公共镜像,如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单. 下载registry镜像并启动 [roo ...
- 在Linux上搭建私有git仓库
最近在学Linux,顺便将自己的服务器用起来,不然又得废弃一年.这次是跟着网上的教程做一个简单的git私有仓库,复杂完整的git系统还需使用gitlib系统. 首先在linux上安装git yum i ...
- ios开发之UIView和UIViewController
UIView 表示屏幕上的一块矩形区域,负责渲染区域的内容,并且响应该区域内发生的触摸事件.它在 iOS App 中占有绝对重要的地位,因为 iOS 中几乎所有可视化控件都是 UIView 的子类. ...
- device tree DTB DTC 相互转换
DTB --> DTS ./dtc -I dtb -O dts *.dtb -o *.dts DTS -> DTB ./dtc -I dts -O dtb -o test.dtb test ...
- C# string.Format json格式字符串报错”输入字符串的格式不正确“
当我们在string.Format中传入Json字符串时,会报”输入字符串的格式不正确“,这是因为json的"{"符号的问题,最开始我是想着用转义一下"{",但 ...
- fiddler 抓取手机http/https包
测试需求: 安装有 fiddler 的电脑台 博主fiddler 4: 手机系统不限制智能手机就行,能连接wifi即可: 首先在fiddler这边配置一下(请不要问我为什么没有汉化毕竟free) ...