在 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()
将给定的键发送到聚焦的输入字段。这就是为什么您需要事先关注目标领域。
我用 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()
将给定的键发送到聚焦的输入字段。这就是为什么您需要事先关注目标领域。