在 PhantomJS 中使用 jQuery 设置时,WebApp 无法识别输入字段已更改

WebApp doesn't recognize that an input field was changed when set with jQuery in PhantomJS

我用 PhantomJS 打开 telegram 并尝试用评估页面填充 phone 数字输入,如下所示:

page.evaluate(function(){
    $("input[name='phone_number']").val("123456789");
});

当 PhantomJS 使用 jQuery 单击下一个按钮时,警报信息显示:

"tel input is empty"

但是当页面呈现时,我们可以在输入字段中看到数字。我该如何填写这个输入?

问题可能是网络应用程序在该字段上有一些事件侦听器,但当您直接更改值时不会调用它们。您可以尝试使用 jQuery.

触发其中一些事件

例如:

$("input[name='phone_number']").blur();

$("input[name='phone_number']").change();

我发现这不一定有效。您可以像这样尝试在 PhantomJS 中使用本机按键事件:

page.evaluate(function() {
    document.querySelector("input[name='phone_number']").focus();
});
page.sendEvent("keypress", "123456789");

page.sendEvent() 将给定的键发送到聚焦的输入字段。这就是为什么您需要事先关注目标领域。