标签: puppeteer

在 Puppeteer 中连接浏览器

是否可以将浏览器连接到 puppeteer 而无需在 puppeteer 中实例化它?例如,像普通用户一样运行一个 Chromium 实例,然后在代码中将它连接到一个 puppeteer 实例?

javascript google-chrome webautomation node.js puppeteer

11
推荐指数
1
解决办法
8087
查看次数

如何使用 xPath 在 Puppeteer 中单击元素

我想在不使用 css 选择器的情况下单击一个元素。

await page.click()
Run Code Online (Sandbox Code Playgroud)

使用选择器来标识元素。


那么我该怎么做呢?

await page.click('/*[@id="toc"]/ul/li[1]/a')
Run Code Online (Sandbox Code Playgroud)

google-chrome node.js puppeteer

11
推荐指数
1
解决办法
1万
查看次数

如何检查 puppeteer 中是否存在选择器?

在 puppeteer 中,我如何检查例如 #idProductType 是否存在,如果不存在,将 producttype 设置为“”?我尝试了很多很多东西,但它不起作用。

            const urls = [myurls, ...]
            const productsList = [];
            for (let i = 0; i < urls.length; i++) {
                const url = urls[i];

                await Promise.all([
                    page.goto(url),
                    page.waitForNavigation({ waitUntil: 'networkidle0' }),
                ]);

                let products = await page.evaluate(() => {

              //here i want to test if #idProductType exists do : 
                    let producttype = document.querySelector('#idProductType').innerText;
              //else 
                    let producttype = "";
              //and same thing for other selectors

                    let productsubtype = document.querySelector('#idProductSubType').innerText;
                    let product = document.querySelector('#idProduct').innerText;
                    let description …
Run Code Online (Sandbox Code Playgroud)

javascript node.js puppeteer

11
推荐指数
5
解决办法
2万
查看次数

Puppeteer npm 如何从本地文件设置字体

我想在使用 puppeteer 节点模块渲染 PDF 时从本地文件加载字体。

使用网络字体对我有用,但这不满足要求。

我的环境:

  • 节点:v10.18.1,
  • 傀儡师:“傀儡师”:“^2.0.0”,
  • Chromium:Chromium 79.0.3945.88 Fedora 项目,
  • 操作系统:CentOS Linux 8.0.1905 版(核心)

这是我到目前为止尝试过的代码:使用@font-face 加载字体、更改 networkidle 的值、设置超时、设置用于字体更新的事件侦听器。事件我设置此回调以获取返回“Open Sans”但呈现的 PDF 文件不是 Open Sans 字体的字体属性。

const puppeteer = require('puppeteer');
const chromiumExecutablePath = '/bin/chromium-browser';

let document = `
    <html>
    <head>
        <meta charset="utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <style>

            @font-face {
                font-family: "Open Sans";
                font-style: normal;
                font-weight: 400;
                src: local("Open Sans") url("/opt/www/webapp/resources/packed/OpenSans-Regular.eot");
                src: local("Open Sans") url("/opt/www/webapp/resources/packed/OpenSans-Regular.woof") format("woff"),
                     local("Open Sans") url("/opt/www/webapp/resources/packed/OpenSans-Regular.ttf") format("truetype");
            }

            html, body { …
Run Code Online (Sandbox Code Playgroud)

javascript css fonts node.js puppeteer

11
推荐指数
1
解决办法
2724
查看次数

我可以在 chrome 扩展中使用 puppeteer

我想构建一个供个人使用的 chrome 扩展。该扩展程序将抓取一些网页并呈现一些信息。所以我认为 puppeteer 可以帮我解决这个问题。我知道我需要在 chrome 扩展中运行节点。是否可以?我找到了一些答案,但它们已经过时了。

google-chrome-extension puppeteer

10
推荐指数
2
解决办法
7124
查看次数

如何使用 puppeteer 访问文本输入字段中的当前值

我正在尝试使用 puppeteer 和 xpath从已经填写的表单中自动检索表单值。

我已经按如下方式自动填充文本输入字段,但使用 .evaluate() 执行相反的操作不起作用:

[fieldHandle] = await page.$x("//label[text() = 'My Label']/../following-sibling::td[1]//input")
await page.evaluate((x, y) => x.value = y, fieldHandle, 'newValue')
Run Code Online (Sandbox Code Playgroud)

这是我最近的尝试 - 仍然没有成功......

let [fieldHandle] = await page.$x("//label[text() = 'My Label']/../following-sibling::td[1]//input")
let fieldRaw = await fieldHandle.getProperty('textContent')
let fieldValue = await fieldRaw.jsonValue()
Run Code Online (Sandbox Code Playgroud)

希望有人知道如何实现这一目标!

javascript xpath node.js puppeteer

10
推荐指数
2
解决办法
6835
查看次数

如何使用 JS/Puppeteer 上传文件

我想弄清楚如何将图片文件上传到输入对话框中。不可能只输入名称并按 Enter 键,因为我看不到使用 Puppeteer 自动执行此操作的方法。我想我必须为图片设置一些值,但我不知道该怎么做。有任何想法吗?

html javascript file-upload input puppeteer

10
推荐指数
2
解决办法
8078
查看次数

当我尝试将 PDF 保存在磁盘上时,Puppeteer 不渲染颜色、背景颜色

这是我的 node.js 和 HTML 模板代码,它从 HTML 模板创建 PDF。它不是把颜色。

const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto("file:///D:/pdf_export/template/template.html");
    await page.pdf({
        path: 'output.pdf',
        printBackground: true
    });
    await browser.close();
})()
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
    </head>

    <body>
        <p style="color: red;">Hello World</p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当我打开 output.pdf 时,它只显示黑色而不是红色的“Hello world”。

node.js puppeteer

10
推荐指数
2
解决办法
5975
查看次数

Docker 上的 Node.js + Puppeteer,没有可用的沙箱

我正在构建一个 node.js LTS 应用程序。我跟着 puppeteer 文档,所以我的 Dockerfile 有这个内容:

FROM node:12.18.0

WORKDIR /home/node/app
ADD package*.json ./

# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
# installs, work.
RUN apt-get update \
    && apt-get install -y wget gnupg \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && sh -c …
Run Code Online (Sandbox Code Playgroud)

google-chrome node.js docker docker-compose puppeteer

10
推荐指数
3
解决办法
2万
查看次数

你如何为 firefox 安装和运行 puppeteer

嗨,我正在做一些网络自动化。我正在尝试打开一个 url,但我在 chrome 控制台中收到数据 URL 错误,所以我转向 firefox 控制台以解决在 chrome 控制台中打开的无数据 url 问题。问题是“npm install puppeteer-firefox”无法为 firefox 安装 puppeteer。如何为 firefox 安装 puppeteer 并将其包含在代码中以便我可以使用它?

由于数据 url 错误,代码在 chrome 中不起作用

const url = await page.evaluate(async () => {

    
        document.querySelector('.n3VNCb').src;
        
    });
    
    url.toString();
    
    await page.goto(url);
Run Code Online (Sandbox Code Playgroud)

我在 node.js 命令提示符中输入的内容来安装 puppeteer firefox。这没有用

npm i puppeteer-firefox
Run Code Online (Sandbox Code Playgroud)

我从 node.js 命令提示符收到的错误

npm WARN 已弃用 puppeteer-firefox@0.5.1:Firefox 支持正在逐渐过渡到 puppeteer 包。从 puppeteer v2.1.0 开始,您可以与 Firefox Nightly 进行交互。puppeteer-firefox > 包将一直可用,直到转换完成,但不再主动维护。有关更多信息,请访问https://wiki.mozilla.org/Remote

puppeteer-firefox@0.5.1 安装 C:\Users\user\Desktop\filename\filename\node_modules\puppeteer-firefox node install.js

错误:无法下载 Firefox rv0.0.1!错误:下载失败:服务器返回代码 404。网址:https : //github.com/puppeteer/juggler/releases/download/v0.0.1/firefox-win64.zip

我也尝试过这些,因为错误说要做,但它们没有用

(节点:14348)UnhandledPromiseRejectionWarning:错误:找不到最新的浏览器修订版。运行“PUPPETEER_PRODUCT=firefox …

javascript firefox webautomation node.js puppeteer

10
推荐指数
3
解决办法
2万
查看次数