因為phantomjs能加載和操縱頁面,它可以自動化地完美執行頁面的各種操作。
操作文檔:
腳本的被執行,就像它真的正在web 瀏覽器上運行一樣。
下面的腳本,是讀取元素id為myagent的文本內容
//導入webpage模塊,創建一個實例var page = require('webpage').create();
//輸出頁面默認的userAgent
console.log("The default Useragent is :" + page.settings.userAgent);
//修改頁面默認的userAgent
page.settings.userAgent = "SpecialAgent";
//打開網頁面
page.open("http://www.httpuseragent.org",function(status){
if(status != 'success'){
console.log("Unable to access network");
}else{
//執行js代碼
var usa = page.evaluate(function(){
return document.getElementById("myagent").textContent;
});
console.log(usa);
}
phantom.exit();
})
2、從1.6版本開始,你可以使用page.includeJs加載jquery到頁面中
var page = require("webpage").create();
page.open("http://www.sample.com",function(){
引用jquery,執行回調函數
page.includeJs("http://code.jquery.com/jquery-2.2.4.min.js",function(){
// evaluate執行JS
page.evaluate(function(){
$("button").click();
})
退出phantomJs,必須寫在includeJs里面,否則可能jquery沒加載完成,便結束了phantom
phantom.exit();
})
})
3、如果我們現在有一個webpage實例,我們能做些什么呢?
屬性:
page.canGoForward --> boolean
window.history.forward是否是一個有效的操作
page.canGoBack --> boolean
window.history.back 是否是一個有效的操作
page.clipRect --> boolean
可以使用以下方式設置成一個對象{top: 0, left: 0, width: 1024, height: 768},它指定將會拍攝屏幕截圖的哪部分。
page.content --> string
整個頁面的HTML內容
page.cookies -->object
當前頁面的cookies
page.customHeaders -->object
TODO
page.event -->object
包含鍵的修改和TODO
page.libraryPath -->string
當前庫的路徑,通常指被執行腳本的路徑
page.loading -->boolean
頁面是否正在加載
page.loadingProgress -->number
頁面加載進度,100意味着頁面加載完成
page.navigationLocked -->boolean
TODO
page.offlineStoragePath -->string
下線數據或sqlite3數據在本地存儲的位置
page.offlineStorageQuota -->number
可離線存儲的配額
page.paperSize -->object
類似clipRect,但采用實際紙張尺寸,例如A4.
page.scrollPosition -->object
用以下形式表示的當前滾動位置
{left:0
top:0
}
page.settings -->object
useragent串的設置
page.title -->string
當前頁面的TITLE
page.url -->string
當前頁面的URL
page.viewportSize -->object
用以下形式表示的瀏覽器大小{width:1024,height:768}
page.windowName -->string
由WM分配的瀏覽器窗口的名字
page.zoomFactor -->number
縮放系數,默認為1.
函數
page.childFramesCount page.childFramesName page.close page.currentFrameName page.deleteLater page.destroyed page.evaluate page.initialized page.injectJs page.javaScriptAlertSent page.javaScriptConsoleMessageSent page.loadFinished page.loadStarted page.openUrl page.release page.render page.resourceError page.resourceReceived page.resourceRequested page.uploadFile page.sendEvent page.setContent page.switchToChildFrame page.switchToMainFrame page.switchToParentFrame page.addCookie page.deleteCookie page.clearCookies page.click() page.refresh()
事件
onInitialized onLoadStarted onLoadFinished onUrlChanged onNavigationRequested onRepaintRequested onResourceRequested onResourceReceived onResourceError onResourceTimeout onAlert onConsoleMessage onClosing
