木偶调用onChange事件处理程序不起作用

时间:2018-07-02 21:16:13

标签: javascript jquery onchange puppeteer

将我的头靠在墙上,希望有人能提供一些建议。

我试图在加载到Puppeteer的页面中调用onChange处理程序。虽然我可以在选择中选择适当的选项(通过关闭无头模式进行验证),但我无法让事件处理程序运行。

1)Puppeteer提供了page.select()方法,该方法明确指出了

  

“一旦提供的所有选项均已触发,便触发更改和输入事件   被选中”

我能够选择预期的选项,但事件处理程序不会触发

await page.select('select#venue', '40');

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));

3)在page.evaluate()调用中使用jQuery手动选择所需的otpion,然后触发事件,例如

$("select#venue").val(17).change();

完全没有想法的人,而想法得到赞赏!

1 个答案:

答案 0 :(得分:1)

我正在搜索同一内容,以触发文本字段上的“ onchange”事件。我对您的代码进行了一些修改,然后成功了:

const myValue = 17;
await page.$eval('#selector', (element, myValue) => {
    element.value = myValue;
    const event = new Event('change');
    element.dispatchEvent(event);
}, myValue);