2014-01-08 63 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