如何在 puppeteer Node.js 中将 const 添加到 await page.$x? xpath 中的常量

Posted

技术标签:

【中文标题】如何在 puppeteer Node.js 中将 const 添加到 await page.$x? xpath 中的常量【英文标题】:How add const to await page.$x in puppeteer Node.js? Const in xpath 【发布时间】:2021-12-11 22:11:19 【问题描述】:

我想将 cont 添加到 href 链接。我想使用常量。我遇到了问题:

const klik2 = await page.$x("//a[contains(@href, 'p2')]");

我要添加

const new = 'p' + [i];

现在'p2'在哪里。如何正确操作?

我的实际代码:

const puppeteer = require('puppeteer');

(async () => 

const browser = await puppeteer.launch(headless: false);
const page = await browser.newPage();
await page.setDefaultNavigationTimeout(0);
await page.goto("http://mypage.test/");
for (let i = 1; i < 100; i++) 
const link = 'p' + [i];
try 

const klik2 = await page.$x("//a[contains(@href, link)]");
await klik2[0].click();

抓住

   console.log(e);    

   await page.goto("http://mypage.test/");


)();

也尝试过这样的事情:

const klik3 = "'" + 'p1' + "'";
const klik = '"//a[contains(@href,' + klik3 + ')]"';
console.log(klik);
const klik2 = await page.$x(klik);
await klik2[0].click();

【问题讨论】:

我不确定你在问什么。 i 是什么?通常连接字符串和数组是没有意义的。 我要使用 " for (let i = 1; i 您能否编辑帖子以包含该代码并显示您正在使用的页面。你想得到什么数据?你的意思是for (let i = 1; i &lt; 10; i++) const link = `p$i`; 还是"p" + i?同样,我不确定您为什么要将 i 放在单个元素数组中。 每个链接都包含p+数字,第一个元素包含p1,第二个包含p2,第三个p3。 【参考方案1】:

您可以使用template literals (template strings)。此外,您的连接中似乎不需要数组(此处:const link = 'p' + [i];

const link = 'p' + i;
try 
  const klik2 = await page.$x(`//a[contains(@href, '$link')]`);
  await klik2[0].click();

【讨论】:

如果有人想知道,它是区分大小写的

以上是关于如何在 puppeteer Node.js 中将 const 添加到 await page.$x? xpath 中的常量的主要内容,如果未能解决你的问题,请参考以下文章

Node.js puppeteer - 如何设置导航超时?

Node Js & Puppeteer - 如何选择包裹在 Anchor 标签内的文本

如何使用 puppeteer 和 Node js 为 pdf 页面生成屏幕截图

使用Puppeteer将Node悬停在Node.js中的element和getComputedStyle上?

Node.js:如何重启 Tor 客户端

使用 Puppeteer 和 Node.JS 在网站上的 iFrame 中找不到隐藏的输入元素