【发布时间】:2014-11-21 09:30:43
【问题描述】:
我一直在研究如何使用 PhantomJS 在网页上自动执行操作,但是在操作页面以执行我想要的操作时遇到问题。
我正在使用this as test site。我已经设法让 Phantom 打开网页并从#result 跨度中抓取随机句子。但现在我想做的是在不重新启动脚本的情况下再获得一句话。我不想关闭并重新打开页面,因为 Phantom 需要很长时间才能启动 webkit 并加载页面。所以我想我可以通过让 Phantom 点击句子框下方的“刷新”按钮来获得另一个句子。这是我目前拥有的:
var page = require('webpage').create();
console.log("connecting...");
page.open("http://watchout4snakes.com/wo4snakes/Random/RandomSentence", function(){
console.log('connected');
var content = page.content;
var phrase = page.evaluate(function() {
return document.getElementById("result").innerHTML;
});
console.log(phrase);
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
page.evaluate(function() {
$("frmSentence").click();
});
});
var content = page.content;
var phrase = page.evaluate(function() {
return document.getElementById("result").innerHTML;
});
console.log(phrase);
phantom.exit();
});
如您所见,我正在尝试使用 .click() 函数单击刷新按钮,但这对我不起作用,因为我仍然得到与之前相同的句子。给定按钮的 HTML:
<form action="/wo4snakes/Random/NewRandomSentence" id="frmSentence" method="post" novalidate="novalidate">
<p><input type="submit" value="Refresh"></p>
</form>
我不确定我应该在要点击的脚本中引用什么?我正在尝试表单 ID 'frmSentence',但这不起作用。我想知道.click() 是否是解决此问题的正确方法,Phantom 是否有某种方法可以提交按钮链接到的表单?或者也许我可以在获取句子的页面上运行相关脚本?我对这个有点迷茫所以我真的不知道我应该采用哪种方法?
【问题讨论】:
标签: javascript html automation phantomjs bots