有没有人知道如何获取元素的innerHTML或文本.甚至更好; 如何单击具有特定innerHTML的元素.这是如何使用普通的javascript:
var found = false
$(selector).each(function() {
if (found) return;
else if ($(this).text().replace(/[^0-9]/g, '') === '5' {
$(this).trigger('click');
found = true
}
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助!
有没有办法使用Puppeteer测试Chrome扩展程序?例如,扩展程序可以检测Chrome是否以"测试"模式启动以提供不同的UI,检查内容脚本是否正常工作等?
当我在windows中进行本地开发测试时,发生了executablePath的问题。
“无法启动 chrome!spawn /usr/bin/chromium-browser ENOENT”
我看到 Windows 需要获取完整路径。否则找不到chrome.exe
代码中的默认值:
const browser = await puppeteer.launch({executablePath: '/path/to/Chrome'});
Run Code Online (Sandbox Code Playgroud)
在 Windows 中它的工作方式如下:
const browser = await puppeteer.launch({executablePath: 'C:\\your_workspace\\node_modules\\puppeteer\\.local-chromium\\win64-(version)\\chrome-win\\chrome.exe'});
Run Code Online (Sandbox Code Playgroud)
在可视化代码中建议路径
我正在使用 Playwright 和 JavaScript 测试 UI。我的代码找到一个输入元素,有时可以是下拉菜单,有时是文本,有时是日期。为了解决这个问题,我分两步输入值。首先,我填充文本,然后单击 Tab 键来调用格式化元素中的值的 JavaScript。
await page.fill("#myID", inputText);
await page.keyboard.press('Tab'); // this line trigger the JS
// continue to the next element
Run Code Online (Sandbox Code Playgroud)
问题是,它没有等待 JavaScript 完成。我怎样才能等待 JS 完成然后代码继续。
我正在尝试使用此代码使用 puppeteer 从网站获取响应正文。
#!/usr/bin/env node
require('dotenv').config();
const puppeteer = require('puppeteer');
const readline = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
const path = require('path');
const fs = require('fs');
//
console.log('Starting Puppeteer...');
let responseBody = [];
(async () => {
const browser = await puppeteer.launch({
headless: false,
executablePath: '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome'
});
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (request) => {
request.continue();
});
//
page.on('requestfinished', async (request) => {
const response = await request.response();
const url = response.url();
// store …Run Code Online (Sandbox Code Playgroud) 我有一个 React/Redux 应用程序,我正在使用 Puppeteer 进行测试。根据文档,我使用以下代码来显示控制台输出:
page.on('console', msg => {
for(let i = 0; i < msg.args().length; ++i) {
let text = msg.args()[i];
console.log(`${i}: ${text}`);
}
});
Run Code Online (Sandbox Code Playgroud)
但是,当 redux-logger 将对象记录到控制台(prevState、nextState)时,Puppeeter 会改为显示JSHandle@object在我的控制台输出中。如何查看此对象中的键和属性?
使用 Puppeteer,我选择了一些 HTML 元素:
await page.$$( 'span.styleNumber' );
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法获取元素的文本:
console.log( await ( await styleNumber.getProperty( 'innerText' ) ).jsonValue() );
Run Code Online (Sandbox Code Playgroud)
如何获取元素的 data-Color 属性的值?
这是我的脚本:
<span class="styleNumber" data-Color="Blue">SG1000</span>
<span class="styleNumber" data-Color="Green">SG2000</span>
<span class="styleNumber" data-Color="Red">SG3000</span>
Run Code Online (Sandbox Code Playgroud)
const puppeteer = require( 'puppeteer' );
( async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto( 'http://www.example.com/sample.php' );
// Get a list of all elements.
var styleNumbers = await page.$$( 'span.styleNumber' );
// Print the style numbers.
for( let styleNumber of …Run Code Online (Sandbox Code Playgroud) 是否可以使用 Puppeteer 脚本打开页面并与之交互,然后按原样保存该浏览器会话,然后加载另一个脚本并从那里继续?
“浏览器会话”是指当前加载的页面,包括页面状态(DOM 空间和 javascript 变量等)、cookie、本地存储、整个shebang。基本上它需要的一切都在上一个脚本停止的地方继续。
如果没有,那么至少可以导出和导入 cookie 和本地存储吗?因此,我可以重新加载特定页面并继续处理,同时保持任何登录或会话数据完整无缺。
有没有什么办法或 Puppeteer API 可以等待元素从 Dom 中消失或移除,然后继续执行?
例如,我有一个加载动画,我想等到这个加载动画从 Dom 中移除。
我正在寻找有关无头浏览器中发生的事情的更多信息。过去我一直在使用不同的无头浏览器,例如slimmerJS、Phantom.js和Headless Chrome,目的是在不同的站点上截取屏幕截图。
我从来没有生成过与您在浏览器中看到的相似的真实、清晰质量的图像,它看起来像是一种工具限制,例如,这是您可以从中获得的最高质量,但我想了解为什么,以及可能如何使它变得更好。
请比较下面的例子。
如果将真实网站与屏幕截图进行比较,您可以看到图像是如何模糊的。在这个例子中,它只是一个图像,但这也发生在 HTML 文本中。
现在,如果我要使用我的计算机截取屏幕截图,无论是 windows、mac 还是 linux,我都会得到一个质量非常好的屏幕截图,看起来完全像真正的交易。
那么为什么会发生这种情况呢?我尝试了所有标准的事情,例如在每个库中设置最高质量的屏幕截图,并设置一个足够大的视口,以便屏幕截图具有合适的分辨率。这真的是您可以从无头浏览器屏幕截图中获得的最高质量吗?
对这方面的任何启示将不胜感激。谢谢!
javascript webautomation node.js google-chrome-headless puppeteer
puppeteer ×10
javascript ×7
node.js ×6
browser ×1
cookies ×1
ecmascript-6 ×1
playwright ×1
reactjs ×1
redux ×1
selenium ×1
session ×1
testing ×1