是否可以将浏览器连接到 puppeteer 而无需在 puppeteer 中实例化它?例如,像普通用户一样运行一个 Chromium 实例,然后在代码中将它连接到一个 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) 在 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) 我想在使用 puppeteer 节点模块渲染 PDF 时从本地文件加载字体。
使用网络字体对我有用,但这不满足要求。
我的环境:
这是我到目前为止尝试过的代码:使用@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) 我想构建一个供个人使用的 chrome 扩展。该扩展程序将抓取一些网页并呈现一些信息。所以我认为 puppeteer 可以帮我解决这个问题。我知道我需要在 chrome 扩展中运行节点。是否可以?我找到了一些答案,但它们已经过时了。
我正在尝试使用 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)
希望有人知道如何实现这一目标!
我想弄清楚如何将图片文件上传到输入对话框中。不可能只输入名称并按 Enter 键,因为我看不到使用 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 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) 嗨,我正在做一些网络自动化。我正在尝试打开一个 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 …