【发布时间】:2018-04-23 10:39:51
【问题描述】:
我有一种情况,表单上的按钮以动画形式显示在视图中,如果 element.click() 在动画进行时发生,则它不起作用。
element.click() 不会抛出错误,不会返回失败状态(它返回未定义),它只是默默地不起作用。
我已尝试确保被单击的元素未被禁用,并且显示(可见),但即使这两个测试都成功,单击也会失败。
如果我在点击之前等待 0.4 秒,它可以工作,因为动画已经完成。
如果我可以检测到点击何时有效,并且如果不能自动重试,我不想增加延迟(这是不可靠的,坦率地说是一个错误)。
是否有一种通用的方法来检测 click() 是否实际已被执行,以便我可以使用重试循环直到它执行?
【问题讨论】:
-
不是 100% 相同,但相关:github.com/GoogleChrome/puppeteer/issues/2107(相关,因为该解决方案可能会解决您的情况)
-
您在
page.click('button');之前尝试过await page.waitForSelector('button');也许它有帮助。但不是很确定。 -
另一种方法是将动画 css buster 注入页面,例如marcgg.com/blog/2015/01/05/…
-
@Bernhard 是的,代码就是这样做的。 page.waitForSelector(选择器);元素 = page.$(选择器); element.click();
标签: puppeteer