2014-01-08 35 views
1

我试图自动化一个应用程序,使用表单安全性来上传文件,然后从返回的HTML中刮取数据。PhantomJS浏览网站(包括表格)

我开始使用this question的解决方案。只要最后一步是渲染页面,我就可以定义我的步骤并完成整个工作流程。

这里有两个步骤是我的脚本的肉:

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选择是正确的。

我见过其他问题,但他们围绕使用setTimeout。不幸的是,原始方法的步骤策略已经超时。

UPDATE 我尝试了稍微不同的方法,使用this post并得到了类似的结果。我相信该文档使用了较老的PhantomJS API,因此我使用“onLoadFinished”事件在各个步骤之间进行驱动。

回答

3

我推荐你使用casperjs或者如果你使用PJS的webPage.injectScript()你可以加载jQuery,然后你自己的脚本来做表单输入/导航。

+0

phantomjs也让你注入的jQuery但耶casperjs容易 – Magus

+0

JASONS可以请你分享任何此类的文章,它会帮助大家 – aniruddha

+0

这是针对我的SaaS,但看细节此页面的“页面自动化”部分:HTTPS ://phantomjscloud.com/docs/ – JasonS