使用PhantomJS浏览网站(包括表单)

时间:2014-01-08 14:40:15

标签: phantomjs

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

我开始使用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。不幸的是,原始方法的步骤策略已经超时。

更新 我尝试了一种稍微不同的方法,使用this post并获得了类似的结果。我相信该文档使用较旧的PhantomJS API,因此我使用'onLoadFinished'事件来驱动步骤。

1 个答案:

答案 0 :(得分:3)

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