简体   繁体   English

Select 页面上新创建的元素 - puppeteer

[英]Select newly created elements on page - puppeteer

I can't select newly created elements made by JS after I process selected task, let's say click on button.在我处理选定的任务后,我不能 select 由 JS 新创建的元素,比如说单击按钮。 Exmp: obr.示例:obr。 在此处输入图像描述 . .

How can you see I click on button and JS adds new <tr> to current table.你怎么能看到我点击按钮和 JS 将新的<tr>添加到当前表。 This <tr> can't be seen even with即使使用该<tr>也无法看到

await page.evaluate(() => document.querySelector('*').outerHTML)

even I tryed to wait即使我试图等待

await page.waitForSelector(selector, { timeout: 2000 });

also with/without parametr visibility: true.也有/没有参数可见性:true。

Is there a way to research content or get changed dom?有没有办法研究内容或改变 dom? Thank you for help谢谢你的帮助

You can use MutationObserver with only childList option true .您可以将MutationObserver与仅childList选项一起使用true Something like this:像这样的东西:

 const table = document.getElementById('myTable'); const observerConfig = { childList: true }; const observerCallback = (mutationsList, observer) => { for(const mutation of mutationsList) mutation.addedNodes.forEach(node => console.log(node)); }; const observer = new MutationObserver(observerCallback); observer.observe(table, observerConfig); // sample code just for adding new rows const btn = document.getElementById('myBtn'); btn.addEventListener("click",()=>{ const tr = document.createElement("TR"); const td = document.createElement("TD"); td.innerText = "I'm new"; tr.append(td); table.append(tr); });
 <table id="myTable"> <tr><td>1</td></tr> </table> <button type="button" id="myBtn">Add</button>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM