gpt4 book ai didi

javascript - 如何使用 PhantomJS 获取属性?

转载 作者:行者123 更新时间:2023-11-30 16:46:51 25 4
gpt4 key购买 nike

我正在尝试使用 PhantomJS 从表单中获取属性“值”:

<input type="text" name="uniq_num" value="2PskzYavnHJa">

这是我的脚本:

var page = require('webpage').create();
var url = 'http://example.com/';

page.open(url, function (status) {
if (status === 'success') {
page.injectJs('https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js');
var input = $(document).ready(function(){
return $('input[name="uniq_num"]').attr('value');
});

console.log(input);
phantom.exit();
}

但它不起作用。

最佳答案

PhantomJS 有一个沙盒 DOM 上下文(页面上下文),您只能通过 page.evaluate() 访问它。 :

page.open(url, function (status) {
if (status === 'success') {
page.includeJs('https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js', function(){
var input = page.evaluate(function(){
return $('input[name="uniq_num"]').attr('value');
});
console.log(input);
phantom.exit();
});
}
}

不要混淆 page.injectJs()page.includeJs()。其中一个采用 URL 和回调,因为它是异步的,另一个采用本地文件名。此外,您不需要 jQuery:

page.open(url, function (status) {
if (status === 'success') {
var input = page.evaluate(function(){
return document.querySelector('input[name="uniq_num"]').value;
});
console.log(input);
phantom.exit();
}
}

请注意:

Note: The arguments and the return value to the evaluate function must be a simple primitive object. The rule of thumb: if it can be serialized via JSON, then it is fine.

Closures, functions, DOM nodes, etc. will not work!

关于javascript - 如何使用 PhantomJS 获取属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31097095/

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