iframe - 使用 puppeteer 单击 iframe 中的按钮
问题描述
尝试单击 iFrame 内的“我接受所有 cookie”按钮(弹出窗口仅显示欧盟国家/地区 IP)。你也可以在这里查看 jsfiddle.net/#&togetherjs=VgKpE0jfJF。
//index.js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless:false,
ignoreHTTPSErrors: true,
slowMo: 50,
args: ['--window-size=1440,900', '--disable-gpu', "--disable-features=IsolateOrigins,site-per-process", '--blink-settings=imagesEnabled=true']
});
const page = await browser.newPage();
await page.goto('https://www.oracle.com/cloud/cost-estimator.html');
await page.waitFor(3000)
const frame = page.frames().find(f => f.name() === 'iframe');
const acceptBtn = await frame.$(`a[class="call"]`);
await acceptBtn.click();
await page.screenshot({path: 'example.png'});
//await browser.close();
})();
我得到的错误
UnhandledPromiseRejectionWarning: TypeError: Cannot read property '$' of undefined
at
请帮忙。谢谢
解决方案
据我所知,这个 iframe 在 HTML 代码中没有名字,所以你可以试试它的 src (URL):
const frame = page.frames().find(f => f.url().startsWith('https://consent-pref.trustarc.com/'));
推荐阅读
- java - JAVA - 基于另一个 CSV 文件读取 CSV 文件
- c# - 如何找到表示为点集合的形状的内边界?
- python-3.x - 使用python 3如何获得协方差/方差
- tensorflow - 如何使 tf.data.Dataset 只打乱数据列的子集?
- javascript - 尝试返回所有匹配的值,而不仅仅是工作表结果中的第一个值
- kubernetes - 无法使用 Recreate 策略定义 Kubernetes StateFul-Set
- java - 全局对象(基于“扩展应用程序”)在一夜之间蒸发……为什么?
- excel - 在VBA中获取UIAutomationElement的可点击鼠标点
- node.js - TYPEORM 过滤复杂 JSON 的数据
- java - 带有 json Body 和多部分文件数组的 PUT 请求