• Puppeteer: 鼠标移动


    文档

    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>
    
  • 相关阅读:
    Android MP3录音实现
    Android应用中MVP开发模式
    ExpandableListView getChildView 不执行,不显示子列表
    Javascript中apply、call、bind
    baidu地图:实现多点连线渲染
    经纬度纠偏的一些经验
    Spark:spark df插入hive表后小文件数量多,如何合并?
    Java-Maven(七):Eclipse中Maven依赖、聚合、继承特性
    Java-Maven(六):Eclipse中Maven插件的命令操作
    Java-Maven(五):Eclipse&Maven下创建java工程&web工程
  • 原文地址:https://www.cnblogs.com/ajanuw/p/10976188.html
Copyright © 2020-2023  润新知