我需要在表中单击一个带有的锚标记。该锚标签位于tr.的最后td中的第一个元素
我可以使用jQuery,但当我试图用Puppeter执行同样的操作时,我遇到了问题,你能帮我吗。
我的jQuery代码是
$('table tr td.uname').each(function(el){
var name = $(this).text();
if($.trim(name) == 'testmyself111'){
$(this).parent().find(':last-child>a')[0].click();
}
});
这就是我试图做的,但无法执行
await page.addScriptTag({
url: 'https://code.jquery.com/jquery-3.4.1.min.js'
});
let tr = await page.evaluate(() => {
let results;
let items = document.querySelectorAll('table tr td.uname');
items.forEach((item) => {
if (item.innerText == 'TESTMYSELF111') {
results = item.parentElement;
}
});
return results;
});
const anchor = await page.evaluate((tr) => {
// get the body anchor tag
const atag= $(tr).parent().find(':last-child>a')[0];
return atag;
}, tr);
console.log(anchor);
您不能将Node
对象从页面返回到NodeJS脚本。您需要执行以下操作之一:
- 在同一个
evaluate
调用中评估所有页面上的脚本 - 使用puppeteer
$
、$$
、$eval
或$$eval
函数操作节点,而无需在浏览器的Execution Context
中执行脚本 - 返回对节点的可序列化引用(例如,完全限定的选择器或其他手动生成的节点地址,您可以将其传递到下一个
evaluate
调用中