gpt4 book ai didi

javascript - Phantom.js - 在警告框内获取文本

转载 作者:行者123 更新时间:2023-11-28 20:44:19 25 4
gpt4 key购买 nike

是否可以使用 Phantom.js 获取警告框内的文本?

var page = require("webpage").create()
, assert = require("assert");

page.open("http://www.mysite.com/page", function (status) {
page.includeJs("jquery-1.10.2.min.js", function () {
var alertText = page.evaluate(function () {
//This should cause an alert dialog to appear
$('button[type="submit"]').click();

//This doesn't work, but is there some equivalent to this?
return $("alert").val();
});

assert.equal(alertText, "Thanks for clicking Submit!");
});
});

最佳答案

无法从 alert 获取消息这样(没有名为 <alert> 的 HTML 元素,这是您要使用 jQuery 查找的元素)。但是,您可以做的是重新定义 window.alert做其他事情,比如登录控制台。然后你可以使用onConsoleMessage查看控制台消息。为了将它与您可以获得的其他控制台消息区分开来,您可以给它一个唯一的前缀。我用了ALERT:在这种情况下:

page.evaluate(function() {
window.alert = function(str) {
console.log("ALERT:" + str);
}
});

page.onConsoleMessage(function(message, lineNumber, sourceId) {
if(/^ALERT:/.test(message)) {
//do something with message
}
});

如果你不想去 onConsoleMessage路线,您可以创建自己的隐藏 input元素(在重新定义的 alert 中)然后简单地查询该值:

page.evaluate(function() {
window.alert = function(str) {
if(jQuery("#alertText").length === 0) {
jQuery("body").append(jQuery("<input>").attr("id", "alertText").attr("text", "hidden");
}

jQuery("#alertText").val(str);
}
});

然后在你的代码中,而不是 jQuery("alert").val() , 你会做 jQuery("#alertText").val() .

关于javascript - Phantom.js - 在警告框内获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19822812/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com