如果完全不了解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. Centos 进入recovery模式,单用户模式

    1.重启服务器,在选择内核界面使用上下箭头移动 2.选择内核并按“e” 3.找到下面这行 4.修改 这里要删除掉rhgb quiet,如下图 5.使用“ctrl + x” 来重启服务器就可以了,重启后 ...

  2. React-Native实战项目-导航器篇(一)

    前言:官方文档已经看了一遍,但印象不是很深,于是在mooc上找了个实战学习项目做一做. 本篇目录: 基础导航练习√ 1.ReactNavigation之createStackNavigator导航器案 ...

  3. react学习笔记_02-元素渲染

    const element = <h1>Hello, world</h1>; 上面的内容代表react中的一个元素,元素是构成 React 应用的最小砖块. 与浏览器的 DOM ...

  4. Mac 安装cnpm

    1.先安装node   node的下载地址:http://nodejs.cn/download/   这个没什么好说的,安装完成后测试一下,在终端输入:node -v   这时候就可以看到安装的nod ...

  5. elasticsearch 嵌套对象使用Multi Match Query、query_string全文检索设置

    参考: https://www.elastic.co/guide/en/elasticsearch/reference/1.7/mapping-nested-type.html https://sta ...

  6. elasticsearch api约定

    elasticsearch REST API 使用JSON通过HTTP协议传输. 本约定贯穿整个REST API,除非有特别的说明. 一.多重索引 大多数APIs引用到一个index参数来在多个索引中 ...

  7. Redis的常用功能

    排序: sort mylist 排序 sort mylist alpha desc limit 0 2 字母排序 sort list by it:* desc by命令 sort list by it ...

  8. httptesting HTTP(s)接口自动化测试框架

    坐标: https://github.com/HttpTesting/pyhttp # HttpTesting ![PyPI](https://img.shields.io/pypi/v/HttpTe ...

  9. Jmeter 将正则表达式提取的参数传给全局(跨线程组使用变量)

    一.使用正则表达式提取sessionId 1.在测试计划(跨线程组使用变量)--> 线程组(登录)--> 添加HTTP请求(登录接口) (1)创建测试计划: 勾选独立运行每个线程组(例如在 ...

  10. 利用Python语言Appium启动ios app

    首先配置好电脑环境,主要是appium太难配了,不多说 然后,分两步 第一步:启动appium服务器 有三种方法,1.下载appium-desk-top(桌面客户端),启动 2.终端启动:appium ...