昨測試時出現個奇妙的bug
我的所有測試資料都寫成陣列,而第一筆一直出錯,第二筆確沒事
當時本來猜測是因為特殊字元的關係嗎?還是我寫的test不夠正確?
就這樣反覆debug了約一個下午
今早一來公司再看了一下,原來是我的第一筆資料裡面藏了一個空格!!!!!!
畢竟我當初是複製貼上的方式,可能在copy整段文字時連同後方的空格也複製了
這真的有點難看到,其實原本從噴出來的錯誤應該也可以看得到
但實在太微小了,當初只有檢查到底整段字有哪裡跟實際的畫面有不一樣,卻沒注意到後方有一個小空格
因為第二個測試是要base在前一個畫面有成功轉換才會成功
但沒道理第二個成功了,第一個卻失敗,這表示頁面是有成功轉換的,但卻說找不到element
原本是朝向我是不是錯用了elementlocated,初期寫test也常常在這裡出錯
萬惡的空格阿~~~
2015年6月30日 星期二
2015年6月22日 星期一
[Selenium][散知識] 當error出現時screenshot
mocha有currentTest可以讓你知道現在test的一些資訊
所以可以在每一個test結束後,只要當下那個test的state == failed,就拍照
所以可以在每一個test結束後,只要當下那個test的state == failed,就拍照
test.afterEach(function(){
if (this.currentTest.state == 'failed') {
driver.takeScreenshot().then(function(data){
var base64Data = data.replace(/^data:image\/png;base64,/,"")
console.log(testtitle);
fs.writeFile("out.png", base64Data, 'base64', function(err) {
if(err) console.log(err);
});
});
}
})
[Selenium][散知識] 大推mochawesome reporter
https://github.com/adamgruber/mochawesome
如果也是使用webdriverJS,並且希望生成一個HTML的報表,大推mochawesome
尋尋覓覓了好一陣子的reporter,終於找到這個
run過一次後也覺得"相當相當"的符合我的想像
之前是用mocha-unfunk-reporter
他是會幫你生成有html架構的reporter沒錯
但我找不到怎麼insert stylesheet
總不能產生出來都要自己手動加
好在先前有些看過資料了
果不其然要change request
花了一天查資料~~嗯~~可以回頭重改資料了
不得不再提一下, mochawesome真的寫得太棒了,不禁很希望自己也能寫得出那樣的東西
遇到超好的套件心情真的很好。
另外附上一個在mochawesome之前看到的yadda-html-reporter
https://github.com/mamalisk/yadda-html-reporter
但最後沒成功,就留著記錄一下
如果也是使用webdriverJS,並且希望生成一個HTML的報表,大推mochawesome
尋尋覓覓了好一陣子的reporter,終於找到這個
run過一次後也覺得"相當相當"的符合我的想像
之前是用mocha-unfunk-reporter
他是會幫你生成有html架構的reporter沒錯
但我找不到怎麼insert stylesheet
總不能產生出來都要自己手動加
好在先前有些看過資料了
果不其然要change request
花了一天查資料~~嗯~~可以回頭重改資料了
不得不再提一下, mochawesome真的寫得太棒了,不禁很希望自己也能寫得出那樣的東西
遇到超好的套件心情真的很好。
另外附上一個在mochawesome之前看到的yadda-html-reporter
https://github.com/mamalisk/yadda-html-reporter
但最後沒成功,就留著記錄一下
2015年6月16日 星期二
[Selenium][散知識] 微妙的細微動作
webdriver的動作都非常快,通常一個動作做完就直下下一個
下面是原先以為沒問題的程序
我自己的認知覺得我第一步都已經等到下一頁的title都出現成正確了,照理說下一頁的lightbox也都應該準備好了
照理說第三步應該可以直接去關掉lightobx
比較麻煩的是第三步的lightbox是可以滑動的三個div
如之前所說,只要invisible的元素都是無法操作的
不過這也還好,好在他們當前的div都有特別設一個div-visible的class
所以選定此class項下的關閉button,照理說應該就可以關閉了
事情不是愚人所想的那樣
他一直說"找不到element"
所以我在第三步再多加一個
幸運通過
下面是原先以為沒問題的程序
test.it('//', function(done){
//填完所有註冊所需要資料
driver.findElement(webdriver.By.css('//button')).click();
driver.wait(webdriver.until.titleIs('//title'),80000);
done();
//點選butoon後等到完成註冊的頁面出現,確認title是否正確
});
test.it('//', function(done){
//檢查連結是否帶有我所想要的字串
done();
});
test.it('//', function(done){
//關掉lightbox
//確認信用卡form有沒有出
done();
});
我自己的認知覺得我第一步都已經等到下一頁的title都出現成正確了,照理說下一頁的lightbox也都應該準備好了
照理說第三步應該可以直接去關掉lightobx
比較麻煩的是第三步的lightbox是可以滑動的三個div
如之前所說,只要invisible的元素都是無法操作的
不過這也還好,好在他們當前的div都有特別設一個div-visible的class
所以選定此class項下的關閉button,照理說應該就可以關閉了
事情不是愚人所想的那樣
他一直說"找不到element"
所以我在第三步再多加一個
test.it('//', function(done){
//確認 div-visible已經被(located)放置了<-多加這個
//關掉lightbox
//確認信用卡form有沒有出
done();
});
幸運通過
[Selenium][散知識] unrecognized chrome option: mobileEmulation
哎,我原本很有野心星期一要完成所有的測試
自認為現在遇到的問題都是類似的,但我忘了想到現在的狀況是
「小問題很多大同小異,但大問題一卡就會卡一整個上午」
而且一天至少會遇到2個大問題...
自以為寫了一個多月遇到大問題的機率變低了,但其實每天都還是會遇到阿
--------------------------
我要測手機版的網站,但自認為把所有的設定都設定完了,
我在家試mobileEmulation是好的,但公司是壞的
出現的是unrecognized chrome option: mobileEmulation
去翻 webdriverJS的文件,還真的剛好最近一次的change log是跟mobileEmulation有點關係
但今天一早確認過公司家裡的webdriver都是最新版了
所以最後賭是chrome driver本身
看了一下我下載的是2.9,但最新的已經是2.15(其實是2.16)
置換後.........
就好了!!!!!!!!!(撒花)
ps
一個很白癡的發現,我是從以下的網址下載chrome driver,算是官方放置各版本chrome driver的地方
http://chromedriver.storage.googleapis.com/index.html
自以為下載了最新版(直接看最後一個檔2.9)
結果剛才發現最新明明是2.16,因為檔案命名的關係,2.16變到中間阿!!!
自認為現在遇到的問題都是類似的,但我忘了想到現在的狀況是
「小問題很多大同小異,但大問題一卡就會卡一整個上午」
而且一天至少會遇到2個大問題...
自以為寫了一個多月遇到大問題的機率變低了,但其實每天都還是會遇到阿
--------------------------
我要測手機版的網站,但自認為把所有的設定都設定完了,
我在家試mobileEmulation是好的,但公司是壞的
出現的是unrecognized chrome option: mobileEmulation
去翻 webdriverJS的文件,還真的剛好最近一次的change log是跟mobileEmulation有點關係
但今天一早確認過公司家裡的webdriver都是最新版了
所以最後賭是chrome driver本身
看了一下我下載的是2.9,但最新的已經是2.15(其實是2.16)
置換後.........
就好了!!!!!!!!!(撒花)
ps
一個很白癡的發現,我是從以下的網址下載chrome driver,算是官方放置各版本chrome driver的地方
http://chromedriver.storage.googleapis.com/index.html
自以為下載了最新版(直接看最後一個檔2.9)
結果剛才發現最新明明是2.16,因為檔案命名的關係,2.16變到中間阿!!!
2015年6月15日 星期一
[Selenium][散知識] 每一次開始新的session別忘了mocha的預設timeout
自以為現在要handle大部分的test case應該都不有太大的問題
DOM的操作,截取值...等,寫了50幾個test suite了,到後期遇到的問題都大同小異
上禮拜結束前發現有些test suite合在一起做比較好
所以我需要先結束前一個session再開一個新的session測另一項
寫完明明滿有把握沒什麼問題,結果到一個browser一開啟也沒進到網頁就說timeout了
想說這也太難debug了把,守在螢幕前一整個上午,因為只開browser就沒動作有點難了解是什麼事發生了
直到剛剛才想到mocha需要先預設timeout,設完就好了= =
該說已經習慣debug好幾個小時會得到一個可能之前就知道的原因...
小時候這樣就會氣得跳起來走來走去,
但也可能是我線快到了,沒時間讓我生氣了
-------------
現在大部分的測試就是寫個60-80%後拼拼湊湊之前的東西就可以完成
但還是會落東落西忘了哪個東西就一直報錯,
集中精神阿(打臉)~
DOM的操作,截取值...等,寫了50幾個test suite了,到後期遇到的問題都大同小異
上禮拜結束前發現有些test suite合在一起做比較好
所以我需要先結束前一個session再開一個新的session測另一項
寫完明明滿有把握沒什麼問題,結果到一個browser一開啟也沒進到網頁就說timeout了
想說這也太難debug了把,守在螢幕前一整個上午,因為只開browser就沒動作有點難了解是什麼事發生了
直到剛剛才想到mocha需要先預設timeout,設完就好了= =
該說已經習慣debug好幾個小時會得到一個可能之前就知道的原因...
小時候這樣就會氣得跳起來走來走去,
但也可能是我線快到了,沒時間讓我生氣了
-------------
現在大部分的測試就是寫個60-80%後拼拼湊湊之前的東西就可以完成
但還是會落東落西忘了哪個東西就一直報錯,
集中精神阿(打臉)~
2015年6月12日 星期五
[Selenium][散知識] xpath還是有盲點
發現其實xpath還是有一點限制
如果我們不知道某個element的名稱,單純想找頁面上有出現哪個字的話,
先前我們寫了
但我發現那只限定於那個Specific Word是有真真實實真真確確的被包在一個tag裡
也就是說
或是
都可以順利被找到
但如果是
這樣就會找不到............
如果我們不知道某個element的名稱,單純想找頁面上有出現哪個字的話,
先前我們寫了
xpath('//*[contains(text(),"Specific Word")]')
但我發現那只限定於那個Specific Word是有真真實實真真確確的被包在一個tag裡
也就是說
< span> Specific Word < /span>
或是
Specific Word
都可以順利被找到
但如果是
Specific Word < br/> Hello World < br/>;
這樣就會找不到............
訂閱:
文章 (Atom)

