Puppeteer:我怎样才能等到列表关闭?如何等到元素从 DOM 中消失?

Posted

技术标签:

【中文标题】Puppeteer:我怎样才能等到列表关闭?如何等到元素从 DOM 中消失?【英文标题】:Puppeteer: How can I wait until a list is closed? How can I wait until an element is disappeared from the DOM? 【发布时间】:2020-09-13 07:20:01 【问题描述】:

Сase: 有一个列表,您需要在其中选择一个项目,然后它会关闭。当您单击另一个项目时,列表没有时间关闭。最后再单击另一个列表元素。

await page.waitForSelector('.list');
await page.click('.list');
await page.waitForSelector('.list-element');
await page.click('.list-element'); // click on the list element and list closes
await page.click('.another-element'); // click on the list

【问题讨论】:

也许page.select()elementHandle.select() 可以帮忙? 你能检查一下这个***.com/questions/61647401/… 吗?也许这有帮助 在playwright中可以使用page.waitForSelector(selector, state: "detached");等待元素从dom中分离出来 【参考方案1】:

为了等待一个元素从 DOM 中消失,你需要首先开始等待元素消失,然后再进行操作:

await Promise.all([
  await page.waitForSelector(waitingSpinner,state: 'detached'),
  await page.click('This is the element which causes the spinner to start')
]);

【讨论】:

如果有帮助,请为答案投票。【参考方案2】:

您可以从以下列表中一次选择多个项目:

// multiple selection
page.selectOption('select#colors', ['red', 'green', 'blue']);

来源:https://playwright.dev/docs/api/class-page#page-select-option

【讨论】:

【参考方案3】:

试试这个:

等待 page.waitForSelector('.list', state: 'hidden');

await page.waitForSelector('.list');
await page.click('.list');
await page.waitForSelector('.list-element');
await page.click('.list-element');
await page.waitForSelector('.list', state: 'hidden');
await page.click('.another-element');

这是 API 文档:https://playwright.dev/docs/api/class-page#page-wait-for-selector

【讨论】:

以上是关于Puppeteer:我怎样才能等到列表关闭?如何等到元素从 DOM 中消失?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能等到 Qt 的 keyevents 中的每个进程完成?

Puppeteer:如何处理多个标签?

我怎样才能写出'n'字符串的所有组合?重复:C=n!/(n-k)! [关闭]

迅速,我如何才能等到收到服务器响应后再继续?

怎样才能彻底关掉443端口?

使用 org-indent-mode 时如何用适当的缩进包装列表?