Phantom.js填写字段,点击提交,现在停留在访问下一页

时间:2012-03-08 17:12:40

标签: node.js javascript phantomjs

我从phantom.js开始(顺便说一下,我爱上了)。我正在尝试让无头浏览器进入我的php管理面板,使用用户名和密码登录,并从登录后重定向到的页面我希望从div标签中获取一些文本。

到目前为止,我设法成功填充字段,创建点击事件,甚至找到对div标签的DOM部分的访问权限并获取inner.Text。

对我来说唯一缺少的部分是当phantom.js点击一个按钮(在这种情况下是登录按钮)时该怎么办,它会登录并更改页面内容。在.click()之后我找不到如何处理;事件

这是我到目前为止所做的代码(顺便说一句,这是一个很好的开始......)

var page = new WebPage();

page.open("the url comes here",
function(status){
if(status != "success"){console.log('fail loading the page');}
    page.evaluate(function(){
        var arr = document.getElementsByName("formname");
        arr[0].elements["username"].value="username here";
        arr[0].elements["password"].value="password here";
    arr[0].elements["submit"].click();
        return;
    }
    phantom.exit()
});

我想要的代码在

之后的页面上运行
console.log(window.frames[1].document.getElementById('status').innerHTML)

所以剩下的唯一问题是如何处理重定向并在另一页上启动脚本。

谢谢,

1 个答案:

答案 0 :(得分:1)

您需要为页面加载设置新的回调:

page.onLoadFinished = function(status){
  console.log(window.frames[1].document.getElementById('status').innerHTML)
}

这应该在触发.click()之前正确。