3

我正在使用 puppeteer 自动重新启动我的 wifi (Linksys Velop),我似乎无法单击锚标签来弹出最终对话框。

await page.waitForSelector('.tab-section > #diagnostics > #reboot > .block-row > .showForNodes', {visible: true});
await page.$eval('.tab-section > #diagnostics > #reboot > .block-row > .showForNodes', elem => elem.click());

单击元素后,锚标记看起来好像被悬停在上面,带有蓝色下划线。这是相关的标记:

            <fieldset id="reboot" class="left">
                <legend>Restart</legend>
                <div class="block-row text-orphan">
                    <a class="reboot-router showForLinksysRouters">Restart router</a>
                    <a class="reboot-router showForNodes">Restart Velop system</a>
                </div>
            </fieldset>

我尝试了 page.click() 和 page.$eval(),更改了点击次数和点击延迟,但我无法让它工作。它不会抛出错误只是不会点击。所有其他按钮单击(其中一个是锚标记)都有效,这只是最后一个。我有什么明显的遗漏吗?

谢谢!

4

1 回答 1

1

由于所有可能的点击解决方案都无法点击元素,(即使使用page.waitForSelector):作为终极黑客,您可以尝试通过强制等待几毫秒来等待链接变为可点击。可以page.waitFor使用 pptr 5.3.0 弃用的 来完成,因为page.waitForTimeout可以使用它。

< 傀儡师 5.3.0

await page.waitFor(4000);
await page.$eval('#reboot > .block-row > .showForNodes', elem => elem.click());

木偶师 5.3.0+

await page.waitForTimeout(4000);
await page.$eval('#reboot > .block-row > .showForNodes', elem => elem.click());
于 2020-09-22T18:00:43.930 回答