如何解决等待菜单动画展开div
使用PuppeteerSharp,如何等待元素完成扩展?
与this other issue非常相似,我有一个菜单,单击后会滑动打开。我正在尝试点击扩展div中的链接。
我为Visible = true
尝试了waiting,但是我认为它在停止扩展之前就已经可见。 (它不会单击#bar
。)
var waitOptions = new WaitForSelectorOptions() { Visible = true };
var waitTask = page.WaitForSelectorAsync("#bar",waitOptions);
var clickTask = page.ClickAsync("#foo");
await Task.WhenAll(waitTask,clickTask); // the next line works if I put a breakpoint here
await page.ClickAsync("#bar");
此solution对JS中的Puppeteer有意义。但是ElementHandle没有类似addEventListener
的东西,并且我找不到TransitionEnd
的任何受支持的事件。
async waitForTransitionEnd(element) {
await page.evaluate((element) => {
return new Promise((resolve) => {
const transition = document.querySelector(element);
const onEnd = function () {
transition.removeEventListener('transitionend',onEnd);
resolve();
};
transition.addEventListener('transitionend',onEnd);
});
},element);
}
所以我尝试仅通过C#实现该JavaScript,但它从未完成...
也许我在事件监听器上做错了事...
不幸的是,我没有很好的例子来再现它。
var divSelector = "#foo";
var expandMenuTask = page.EvaluateFunctionAsync(@"(element) => {
return new Promise((resolve) => {
const transition = document.querySelector(element);
const onEnd = function () {
transition.removeEventListener('transitionend',onEnd);
resolve();
};
transition.addEventListener('transitionend',onEnd);
});
}",divSelector);
var clickTask = page.ClickAsync(divSelector);
await Task.WhenAll(expandMenuTask,clickTask);
我可能最终选择Task.Delay(1000)
。只是在寻找正确的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。