如果完全不了解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中文社区的更多相关文章

  1. 【干货分享】Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  2. node.js中文资料导航 Mark

    Node.js HomePage Infoq深入浅出Node.js系列(进阶必读) Node.js中文文档 被误解的 Node.js Node.js C++ addon编写实战系列 热门node.js ...

  3. 【干货分享】Node.js 中文资料导航

    这篇文章与大家分享一批高质量的的 Node.js 中文资料.Node.js 是一个基于 Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用 Node ...

  4. node.js中文资料导航

    以下资料来自gitHUb上面:https://github.com/youyudehexie/node123 Node.js HomePage Node官网七牛镜像 Infoq深入浅出Node.js系 ...

  5. Node.js 中文学习资料和教程导航

    这篇文章来自 Github 上的一位开发者收集整理的 Node.js 中文学习资料和教程导航.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念,它的目标是帮助程 ...

  6. GitHub中文社区

    今天在打开GitHub的时候,使用了bing.com搜索,输入GitHub进行搜索链接,排名第一的为GitHub中文社区,点击去发现这个社区还可以,我们看看GitHub中文社区有哪些好的地方 GitH ...

  7. [转载]fullPage.js中文api 配置参数~

    fullPage.js中文api 配置参数 选项 类型 默认值 说明 verticalCentered 字符串 true 内容是否垂直居中 resize 布尔值 false 字体是否随着窗口缩放而缩放 ...

  8. JS.中文乱码,Jsp\Servlet端的解决办法

    JS.中文乱码,Jsp\Servlet端的解决办法 2010-03-08 15:18:21|  分类: Extjs |  标签:encodeuricomponent  乱码  urldecoder   ...

  9. neo4j中文社区

    关于Neo4j中文社区 官网:http://neo4j.com.cn/ Neo4j 社区为国内具影响力的 Neo4j技术社区,致力于 Neo4j 的技术研究. Neo4j 社区由一批热爱 Neo4j ...

随机推荐

  1. docker--数据持久化之Data Volume

    使用mysql为例 查看docker hub官方的mysql image 的dockerfile,有这一行:VOLUME /var/lib/mysql -v给volume创建别名 [root@loca ...

  2. 关于sizeof的几个问题

    #include <stdio.h> #include <stdlib.h> int main(int argc, char const *argv[]) { char *ps ...

  3. js 基础 for in 和 for of的区别详解

    for in 和 for of 相对于大家肯定都不陌生,都是用来遍历属性的没错.那么先看下面的一个例子: 例1 const obj = { a: 1, b: 2, c: 3 } for (let i ...

  4. Java面试宝典(3)Java基础部分

    51.启动一个线程是用run()还是start()? . 启动一个线程是调用start()方法,使线程就绪状态,以后可以被调度为运行状态,一个线程必须关联一些具体的执行代码,run()方法是该线程所关 ...

  5. docker镜像仓库

    搭建私有镜像仓库 Docker Hub作为Docker默认官方公共镜像,如果想自己搭建私有镜像仓库,官方也提供registry镜像,使得搭建私有仓库非常简单. 下载registry镜像并启动 [roo ...

  6. 在Linux上搭建私有git仓库

    最近在学Linux,顺便将自己的服务器用起来,不然又得废弃一年.这次是跟着网上的教程做一个简单的git私有仓库,复杂完整的git系统还需使用gitlib系统. 首先在linux上安装git yum i ...

  7. ios开发之UIView和UIViewController

    UIView 表示屏幕上的一块矩形区域,负责渲染区域的内容,并且响应该区域内发生的触摸事件.它在 iOS App 中占有绝对重要的地位,因为 iOS 中几乎所有可视化控件都是 UIView 的子类. ...

  8. 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 ...

  9. C# string.Format json格式字符串报错”输入字符串的格式不正确“

    当我们在string.Format中传入Json字符串时,会报”输入字符串的格式不正确“,这是因为json的"{"符号的问题,最开始我是想着用转义一下"{",但 ...

  10. fiddler 抓取手机http/https包

    测试需求: 安装有 fiddler  的电脑台  博主fiddler 4: 手机系统不限制智能手机就行,能连接wifi即可: 首先在fiddler这边配置一下(请不要问我为什么没有汉化毕竟free) ...