2015年5月28日 星期四

[Selenium] timeout of 30000ms exceeded. Ensure the done() callbacked is being called in this test

test case 寫得越來越多,越跑越多
目前都還是會出現這個錯誤
也確定done()有呼叫了,但還是一樣

一開始以為是元素沒被找才報得錯
但自己講完就覺得哪裡不對
後來守在電腦旁看,發現明明新視窗也跳出一陣子了,看test也還在跳,沒多久就報錯
該有的元素跟字串都有正確出現,
也曾看過新視窗都還沒跳出來就直接報錯

原本的寫法是

  driver.wait(webdriver.until.titleIs(testCase.firstLoginTitle),80000);   
  done();
照理說應該不會有錯阿,timeout的值也設得夠大 而且wait until titleIs也確定是這樣用,但跳出來的結果卻是時好時壞 後來決定改成這個,等晚一點全部run過看會怎樣
  driver.getTitle().then(function (title) {
    assert.equal(testCase.firstLoginTitle, title); 
    done();
  });


跑完了,嗯,用assert會比較方便一點,至少還可以看到錯誤的原因
但出現了"no such element"也是我頭痛的,這就表示真的沒找到東西

ps. 我今天整天在想可不可以把一些config的檔寫在外部,但很多人說設定global variable很不好,但...
又想起「過早最佳化是萬惡的根源」,雖然原文跟我現在所講的是有點不太一樣
但我的確常常還沒全部用完就想搞什麼最佳化,這幾年工作輕驗覺得這些作為的確有浪費時間之嫌阿
有時候會想說實在不需要低估自己處理稍微難或複雜的事情,太早先預設會怎樣實在是沒必要(但真的是非常大的專案我想是另當別論)


另外,想要把selenium的文更完整的收錄,但最近時間實在吃緊!!!

沒有留言:

張貼留言