以前的一个answer https://stackoverflow.com/questions/51066987/puppeteer-how-can-i-wait-for-ajax-request-and-process-the-result为我指明了如何捕获异步验证错误或重定向的方向。但在我的场景中iframe
它开始发挥作用,让我一整天都很忙。一些指向正确方向的指针会非常有帮助,因为即使错误清楚地说明了问题所在,我也无法做到正确。
场景的:
- 输入留空。在 iframe 内单击按钮,异步请求返回验证错误
- 输入有一个值。单击 iframe 内的按钮,用户将被重定向到显示“yaay”的页面。
在第二种情况下抛出的错误指出waitForFunction failed: frame got detached
。这是有道理的,因为框架不再存在......我找到了frame.isDetached()
但这仍然不断抛出相同的错误。我缺少什么或者如何使用此方法使其发挥作用?
let frame = (await page.frames())[0];
...
for (let action of actions) {
if (action.type === '...') {
// ...
}
if (action.type === 'click') {
frame.click("#btn");
// works for scenario 1
await Promise.race([
page.waitForNavigation({ waitUntil: "networkidle2" }),
// ERROR THROWN HERE FOR SCENARIO 2
// `waitForFunction failed: frame got detached`
// the line below doesn't seem to work as well...
// frame.isDetached() ? Promise.resolve() : frame.waitForSelector(".error")
frame.waitForSelector(".error"),
]);
if (await frame.$(".error")) {
// there was an error
} else {
// the page changed
if (await page.waitForFunction('document.querySelector("body").innerText === "finished"')) {
// yeeey
}
}
}
}
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)