Sha*_*ley 6 javascript jquery onchange puppeteer
将我的头撞到这堵墙上,希望有人能给我一些建议。
我试图在加载到Puppeteer的页面中调用onChange处理程序。虽然我可以在select中选择适当的选项(通过关闭无头程序进行验证),但我无法使事件处理程序运行。
1)Puppeteer提供了page.select()方法,该方法明确声明
“选择所有提供的选项后,触发更改和输入事件”
我可以选择预期的选项,但事件处理程序不会触发
await page.select('select#venue', '40');
Run Code Online (Sandbox Code Playgroud)
2)在page.evaluate()调用中使用本机javascript来手动选择所需的选项,然后生成一个新的Event并使用element.dispatchEvent(event)进行手动操作,例如
document.querySelector('select#venue > option:nth-child(4)').selected = "selected";
const event = new Event('change', {bubbles: true});
event.simulated = true;
document.querySelector('select#venue').dispatchEvent(event));
Run Code Online (Sandbox Code Playgroud)
3)在page.evaluate()调用中使用jQuery手动选择所需的otpion,然后触发事件,例如
$("select#venue").val(17).change();
Run Code Online (Sandbox Code Playgroud)
乡亲们完全摆脱了主意,而思想受到赞赏!
小智 8
我正在寻找同样的东西,在文本字段上触发“onchange”事件。我稍微修改了你的代码并且它起作用了:
const myValue = 17;
await page.$eval('#selector', (element, myValue) => {
element.value = myValue;
const event = new Event('change');
element.dispatchEvent(event);
}, myValue);
Run Code Online (Sandbox Code Playgroud)