使用PhantomJS导航站点(包括表单)
我正在尝试自动化一个应用程序,该应用程序使用表单安全性来上载文件,然后从返回的HTML中提取数据 我开始使用的解决方案来自。只要最后一步是呈现页面,我就可以定义步骤并完成整个工作流 以下是我脚本的两个主要步骤:使用PhantomJS导航站点(包括表单),phantomjs,Phantomjs,我正在尝试自动化一个应用程序,该应用程序使用表单安全性来上载文件,然后从返回的HTML中提取数据 我开始使用的解决方案来自。只要最后一步是呈现页面,我就可以定义步骤并完成整个工作流 以下是我脚本的两个主要步骤: function() { page.open("https://remotesite.com/do/something", function(status) { if ('success' === status) { page.upload
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展开的。不幸的是,原始方法的step策略已经超时
更新
我尝试了一种稍有不同的方法,使用,得到了相似的结果。我相信该文档使用的是较旧的PhantomJS API,因此我使用了“onLoadFinished”事件来驱动各个步骤。我建议您使用或使用PJS的网页。injectScript()您可以加载jquery,然后加载自己的脚本来进行表单输入/导航。phantomjs也允许您注入jquery,但是是的casperjs是easierJasonS。您可以分享任何这样的文章吗?它将帮助所有人这是我的SaaS特有的,但有关详细信息,请查看本页的“页面自动化”部分: