【发布时间】:2022-01-03 13:11:47
【问题描述】:
我正在尝试设置一个机器人,该机器人将单击项目网页上的按钮。现在这可以在其他网页上正常工作,但是,在我想使用它的页面上,开发人员显然认为几乎没有 id 将是一个绝妙的主意。因此,我一直在试图弄清楚如何按类选择 div(它拥有的唯一可用选择器)。是的,我尝试过使用 Xpath:两次都返回 null 或错误。如果它在另一个网页上,这是工作代码:
const puppeteer = require('puppeteer');
async function scrapeProduct(url) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
await page.click('#someid');
await page.screenshot({
path: "success.png",
fullPage: true
});
await browser.close();
}
scrapeProduct('someurl');
这是我测试 Xpath 的工作,但这又不适合我想做的事情(不确定这是否是正确的方式 - 似乎有点迂回,我不知道你会如何点击它):
async function scrapeProduct(url) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
const [el] = await page.$x('//*[@id="btt-btn"]');
const classID = await el.getProperty('textContent');
const classIDText = await classID.jsonValue();
console.log(classIDText);
await page.screenshot({
path: "success.png",
fullPage: true
});
await browser.close();
}
scrapeProduct('someurl');
我得到的错误是关于没有找到该选择器的节点,在这种情况下是 '.DropdownSelectInput__SelectBoxText-sc-1ssquc7-0 bnoarO'
有人有什么想法吗?我尝试了多种不同的选择器和方法,但不知道该怎么做。
【问题讨论】:
-
我会尝试在 Chrome 中使用
CSS Selector选项:stackoverflow.com/questions/4500572/… -
您能分享您正在使用的页面/DOM/HTML 标记吗?否则很难提出建议。您正在尝试制作什么样的应用程序来为问题添加上下文?按钮点击器是否需要在任何网页、网页的某些子集或特定网页上工作?
标签: javascript click puppeteer google-chrome-headless