代码碎片之nodejs+selenium-webdriver抓元素为图片

比如抓验证码、小姐姐之类的,有些如果是base64的简单

var findQr = driver.findElement(By.xpath("//img[@aria-label='二维码']"));
        findQr.getAttribute("src").then(function(data){
            console.log(data);
         });

如果不是的话,下载也行(本博客前一篇),或者用下面这截图后裁剪方法。

screenshotElement: function (driver, locator) {
    return new Promise(async (resolve, reject) => {
      try {
        let base64Image = await driver.takeScreenshot();
        let decodedImage = new Buffer(base64Image, "base64");
        let dimensions = await driver.findElement(By.xpath(locator)).getRect();
        let xLoc = xext + dimensions.x;
        let yLoc = yext + dimensions.y;
        let eWidth = eleWidth + (xLoc * 2 - 300);
        let eHeight = eleHeight + yLoc;
        let image = await Jimp.read(decodedImage);
        image.crop(xLoc, yLoc, eWidth, eHeight).getBase64(Jimp.AUTO, (err, data) => {
          if (err) {
            console.error(err)
            reject(err)
          }
          imgConvert.fromBuffer({
            buffer: data,
            output_format: "jpg"
          }, function (err, buffer, file) {
            if (!err) {
              let croppedImageDataBase64 = buffer.toString('base64')
              resolve(croppedImageDataBase64)
            }
            else {
              console.error(err.message);
              reject(err)
            }
          })
        });
      } catch (err) {
        console.error(err.message);
        reject(err)
      }
    })
  },

引用自

https://stackoverflow.com/questions/40958132/selenium-webdriver-nodejs-how-to-crop-an-image

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注