如果完全不了解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. 49-python基础-python3-列表-常用列表统计函数-max()-min()-sum()

    max() min() sum() 1-数字列表统计 实例: 2-字符串列表统计. 根据ASCII码大小统计字符串列表的min()和max(). 注意:sum()函数无法统计字符串列表. 实例:

  2. 力扣——Copy List with Random Pointer(复制带随机指针的链表) python实现

    题目描述: 中文: 给定一个链表,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点. 要求返回这个链表的深拷贝. 示例: 输入:{"$id":" ...

  3. ECUST_Algorithm_2019_1

    简要题意及解析 1001 求\(a+b\). 数据范围很大,用int或者long long不行.Java和python可以使用大数直接写. 高精度加法:做法就是将数据读入字符串中,数组的每一个单元存一 ...

  4. Administrator 被禁用

    Administrator 被禁用 问题: 重装系统后出现输入用户名和密码的情况,原因是Administrator被禁用. 解决方法: 1.开机后shift+重启 –>选择疑难解答 --> ...

  5. 【算法】一致性Hash算法

    一.分布式算法 在做服务器负载均衡时候可供选择的负载均衡的算法有很多,包括: 轮循算法(Round Robin).哈希算法(HASH).最少连接算法(Least Connection).响应速度算法( ...

  6. 阿里云公共DNS正式发布支持IPv6的版本

    在10月23日召开的GNTC 2019全球网络技术大会IPv6分论坛上,阿里云高级技术专家张先国宣布支持阿里公共DNS的IPv6版本正式发布,即阿里公共DNS在保持IPv4 稳定解析服务的基础上(An ...

  7. eureka学习(二)

    eureka服务端创建好后,现在我们让eureka客户端(也就是服务提供者)注册到eureka上去. 首先加入依赖包: <!--将微服务provider注册到eureka--> <d ...

  8. zabbix监控winserver网卡流量

    当前基于windows2008系统安装配置zabbix客户端,服务端为linux系统 1.设置防火墙规则 开启防火墙入站(tcp和udp)10050端口 2.在zabbix官网上下载windows包 ...

  9. 'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件。

    解决方法: 本方法适用于已经成功安装python并配置了环境变量. 1.到官网下载pip.py文件 https://pypi.python.org/pypi/pip#downloads 点击下载,解压 ...

  10. 04 循环结构概述和for语句的格式及其使用

    04.01_Java语言基础(循环结构概述和for语句的格式及其使用) A:循环结构的分类 for,while,do…while B:循环结构for语句的格式: for(初始化表达式;条件表达式;循环 ...