2017-09-28 43 views
0

我正在寫一些e2e測試,並且在填寫表單並嘗試在我自定義的選擇下拉組件中選擇項目時,我被迫使用browser.sleep(...)進行測試,如果我不使用它那麼測試失敗。這是爲什麼發生?Angular 2 e2e protactor:如果我不使用browser.sleep(),我的測試失敗。爲什麼?

這是工作的測試:

describe('...',() => { 
    it(`...`,() => { 
     page.navigateTo('/...').then(() => { 
      element(by.tagName('single-select-foo')).element(by.tagName('button')).click().then(() => { 
       element(by.tagName('single-select-foo')).all(by.css('.select-menu-item')).first().click(); 
      }); 

      browser.sleep(2000); 

      element(by.tagName('single-select-bar')).element(by.tagName('button')).click().then(() => { 
       element(by.tagName('single-select-bar')).all(by.css('.select-menu-item')).first().click(); 
      }); 
     }); 
    }); 
}); 

這是失敗的測試(除去browser.slepe(2000)行:

describe('...',() => { 
    it(`...`,() => { 
     page.navigateTo('/...').then(() => { 
      element(by.tagName('single-select-foo')).element(by.tagName('button')).click().then(() => { 
       element(by.tagName('single-select-foo')).all(by.css('.select-menu-item')).first().click(); 
      }); 

      element(by.tagName('single-select-bar')).element(by.tagName('button')).click().then(() => { 
       element(by.tagName('single-select-bar')).all(by.css('.select-menu-item')).first().click(); 
      }); 
     }); 
    }); 
}); 

失敗的測試給了我這個錯誤:

  • Failed: unknown error: Element <button _ngcontent-c16="" class="btn btn--select" type="button">...</button> is not clickable at point (514, 439). Other element would receive the click: ... (Session info: chrome=61.0.3163.100) (Driver info: chromedriver=2.32.498537 (cb2f855cbc7b82e20387eaf9a43f6b99b6105061),platform=Mac OS X 10.12.5 x86_64)
+0

睡眠可能允許頁面完成渲染,如果沒有它,量角器正嘗試與尚未完全呈現的元素進行交互。在其他平臺上,我一般與chromedriver存在相同的問題。 –

+0

@RoddyoftheFrozenPeas你知道寫一個更美麗的方式嗎?喜歡有什麼樣的承諾或我可以聽的東西,並將它們鏈接在一起,而不是做一個不可預測的'browser.sleep()'? – Lansana

回答

0

固定通過實際解決代碼中的特定錯誤。槓桿browser.wait(until.elementToBeClickable(...))在該button元素中的錯誤和問題已解決,因爲錯誤表示該按鈕在發生錯誤時不可點擊。

相關問題