標籤:style blog http color io 使用 ar for art
CasperJS的執行workflow的一個問題(如果可以的話,請不要認為這是一個bug):
虛擬碼如下:
var casper = require("casper").create();casper.start("http://xx.xx.com");casper.then(function(){ this.echo("AAAA"); this.wait(1000, function(){ this.echo("BBB"); }) this.echo("CCCC");});casper.run(){ this.echo("...");};
預期運行結果可以應該是這樣吧:
AAAABBBCCCC...
實際運行結果其實這樣:
AAAACCCCBBB...
CasperJS本身是一個使用python語言封裝的PhantomJS測試架構,沒有看過它的workflow具體實現;所以只能猜想:
方法casper.then和方法casper.wait組成workflow的邏輯,或者說是workflow執行單元;
而其他代碼不被當作執行單元,所以必須封裝在casper.then或者casper.wait內。
casper.wait是一個系列的API,另外還有waitForSelector、waitFor、waitWhileSelector、waitUntilVisible等等;
用的最多的就是this.waitForSelector,設定一個逾時時間等待一個元素(Html element),如果找到了就怎樣/如果逾時就怎樣。
所以實際項目中的代碼大約如下:
this.then(function(){ this.echo("start..."); this.waitFor( /// ... ) this.waitForSelector( // ... )})this.then(function(){ this.echo("start..."); this.waitFor( /// ... this.waitForSelector( // ... ) )})
(我的小項目自己一個人寫,很多東西都在摸索階段)
希望有經驗的同仁不吝賜教!
CasperJS實踐筆記(1)