文档

mouse.click 是 mouse.move,mouse.down 和 mouse.up 的快捷方式

main.js

const pptr = require('puppeteer');
const gotoUrl = 'http://127.0.0.1:5500/index.html'; (async () => {
const browser = await pptr.launch({
headless: false,
slowMo: 250,
});
const page = await browser.newPage(); page.on('console', msg => {
console.log(msg.text());
});
await page.goto(gotoUrl); await page.mouse.move(100, 100); await page.mouse.down();
await page.mouse.move(200, 100, {
steps: 3,
});
await page.mouse.move(200, 200);
await page.mouse.move(100, 200);
await page.mouse.move(100, 100);
await page.mouse.up(); await page.mouse.move(150, 150);
await page.mouse.down(); setTimeout(async () => {
await browser.close();
}, 2000);
})();

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<style>
html,
body {
margin: 0;
}
</style>
</head>
<body>
<script src="https://unpkg.com/p5@0.7.2/lib/p5.min.js"></script>
<script src="https://unpkg.com/p5@0.7.2/lib/addons/p5.dom.min.js"></script>
<script>
let isButtonRight = false;
let make = null;
let root = null;
let makeSize = null; function setup() {
root = createDiv();
createCanvas(600, 400)
.parent(root)
.id('js-canvas');
background(0); makeSize = createVector(40, 40);
createmake(); document.getElementById('js-canvas').oncontextmenu = e =>
e.preventDefault();
document.getElementById('js-make').oncontextmenu = e =>
e.preventDefault();
} function draw() {
if (mouseIsPressed) {
// 鼠标按下画
if (mouseIsPressed && mouseButton === LEFT) {
// stroke(random(255), random(255), random(255));
stroke('red');
strokeWeight(4);
line(
isButtonRight ? mouseX : pmouseX,
isButtonRight ? mouseY : pmouseY,
mouseX,
mouseY,
);
isButtonRight = false;
} else if (mouseButton === RIGHT) {
isButtonRight = true; // if(keyCode === 18){// 按下 alt 相加
// makeSize.add(0.5, 0.5);
// }else if(keyCode === 17){ // 按下 ctrl 相减
// makeSize.sub(0.5, 0.5);
// }
make.size(makeSize.x, makeSize.y);
make.position(mouseX, mouseY).show(); fill(0);
noStroke();
ellipseMode(CENTER);
ellipse(mouseX, mouseY, makeSize.x);
}
} if (keyIsPressed) {
// 按下空格键清空画布
if (keyCode == 32) background(0);
}
} function mouseReleased() {
if (mouseButton === RIGHT) {
make.hide();
makeSize = createVector(40, 40);
}
} // make在右键被呼起时才显示, 右键被抬起则隐藏
function createmake() {
make = createDiv()
.parent(root)
.id('js-make')
.size(makeSize.x, makeSize.y)
.style('background-color', '#fff')
.style('border-radius', '50%')
.style('transform', 'translate(-40%, -40%)')
.hide();
}
</script>
</body>
</html>

Puppeteer: 鼠标移动的更多相关文章

  1. puppeteer,新款headless chrome!

    puppeteer puppeteer是一种谷歌开发的Headless Chrome,因为puppeteer的出现,业内许多自动化测试库停止维护,比如PhantomJS,Selenium IDE fo ...

  2. Puppeteer: 更友好的 Headless Chrome Node API

    很早很早之前,前端就有了对 headless 浏览器的需求,最多的应用场景有两个 UI 自动化测试:摆脱手工浏览点击页面确认功能模式 爬虫:解决页面内容异步加载等问题 也就有了很多杰出的实现,前端经常 ...

  3. puppeteer(三)常用API

    1.Puppeteer 简介 Puppeteer 是一个node库,他提供了一组用来操纵Chrome的API, 通俗来说就是一个 headless chrome浏览器 (当然你也可以配置成有UI的,默 ...

  4. puppeteer,新款headless chrome

    puppeteer puppeteer是一种谷歌开发的Headless Chrome,因为puppeteer的出现,业内许多自动化测试库停止维护,比如PhantomJS,Selenium IDE fo ...

  5. 基于jest和puppeteer的前端自动化测试实战

    前端测试现状 经常听到后端同学说“单元测试”,前端写过测试用例的有多少?答案是:并不多,为什么呢?两个主要原因 1.前端属于GUI软件,浏览器众多,兼容问题让人头大,用户量有一定规模的浏览器包括: I ...

  6. 使用Puppeteer进行数据抓取(二)——Page对象

    page对象是puppeteer最常用的对象,它可以认为是chrome的一个tab页,主要的页面操作都是通过它进行的.Google的官方文档详细介绍了page对象的使用,这里我只是简单的小结一下. 客 ...

  7. 前端测试框架 puppeteer 文档翻译

    puppeteer puppeteer 是一个通过DevTools 协议提供高级API 来控制 chrome,chromium 的 NODE库; puppeteer默认运行在 headless 模式, ...

  8. 关于Puppeteer的那些事儿

    最近开始上手一个自动化测试工具Puppeteer,来谈一谈关于它的一些事儿. Puppeteer中文文档:https://zhaoqize.github.io/puppeteer-api-zh_CN/ ...

  9. 【PUPPETEER】初探之拖拽操作(五)

    一.知识点 page.mouse elementHandle.boundingBox() ignoreDefaultArgs:['--enable-automation']   waitUntil 二 ...

随机推荐

  1. UVA11694 Gokigen Naname题解

    目录 写在前面 Solution Code 写在前面 UVA的题需要自己读入一个 \(T\) 组数据,别被样例给迷惑了 Solution 每个格子只有两种填法且 \(n \le 7\),暴力搜索两种填 ...

  2. LOJ10144宠物收养所

    HNOI 2004 最近,阿 Q 开了一间宠物收养所.收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物. 每个领养者都希望领养到自己满意的宠物,阿 Q 根据领养者的要求通过他自己发明的 ...

  3. Quartz:定时任务工具类

    Quartz:定时任务工具类 Quartz工具类 Quartz工具类 import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; ...

  4. Linux 使用Vmware克隆,修改克隆机器内容

    在Vmware中搭建好一台虚拟机,拍照快照,然后克隆其他集群进行练习,克隆后的机器都需要修改的内容有如下几点: 1:各机器之间,在网络上能够互相ping通 每台机器的IP地址必须是唯一的. 进入 ca ...

  5. jquery的ajax提交时加载处理方法

    1.定义全局的,就是所有的ajax的请求的加载都会出现相同的提示 $(function(){ //加载成功显示的状态 $("#showLoading").ajaxSuccess(f ...

  6. MyEclipse配置maven以及项目jar包更改

    将压缩包解压,路径中不要包含中文,我解压的路径是D:\JAVA\apache-maven-3.0.5 新建环境变量M2_HOME 指向D:\JAVA\apache-maven-3.0.5 在path中 ...

  7. UML——活动图

    宏观导图 是森马?   活动图,属于UML中动态建模工具图,它描述活动的顺序,展现从一个活动到另一个活动的控制流.活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程.   其实,说白了 ...

  8. git从安装到多账户操作一套搞定(二)多账户使用

    作者:良知犹存 转载授权以及围观:欢迎添加微信:Allen-Iverson-me-LYN 总述     GIT是当今热门代码管理技术,但是如此火的系统,竟然是大神林纳斯花了两周用C写出来的一个分布式版 ...

  9. F - F(最小生成树)

    题意:连通各点最短距离,最小生成树. You are assigned to design network connections between certain points in a wide a ...

  10. Codeforces Round #683 (Div. 2, by Meet IT)【ABCD】

    比赛链接:https://codeforces.com/contest/1447 A. Add Candies 题意 \(1\) 到 \(n\) 个袋子里依次有 \(1\) 到 \(n\) 个糖果,可 ...