使用PhantomJS导航网站(包括表单)



我正在尝试自动化一个使用表单安全性的应用程序,以便上传文件,然后从返回的HTML中抓取数据。

我开始使用这个问题的答案。只要最后一步是呈现页面,我就可以定义我的步骤并完成整个工作流。

以下是我的脚本的两个关键步骤:

function() {
page.open("https://remotesite.com/do/something", function(status) {
if ('success' === status) {
page.uploadFile('input[name=file]', 'x.csv');
page.evaluate(function() {
// assignButton is used to associate modules with an account
document.getElementById("assignButton").click();                    
});
}
});
},
function() {
page.render('upload-results.png');
page.evaluate(function() {
var results = document.getElementById("moduleProcessingReport");
console.log("results: " + results);
});
},

当我运行脚本时,我看到输出渲染是正确的。但是,评估部分不起作用。我可以通过在远程站点上的Javascript控制台中运行DOM来确认我的DOM选择是正确的。

我看到了其他问题,但它们都围绕着使用setTimeout展开。不幸的是,原始方法中的步骤策略已经超时。

UPDATE我尝试了一种稍微不同的方法,使用这篇文章,得到了类似的结果。我相信该文档使用了一个较旧的PhantomJS API,所以我使用了"onLoadFinished"事件在步骤之间驱动。

我建议您使用casperjs,或者如果您使用PJS的webPage.injectScript(),您可以加载jquery,然后加载您自己的脚本来进行表单输入/导航。

最新更新