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)
睡眠可能允許頁面完成渲染,如果沒有它,量角器正嘗試與尚未完全呈現的元素進行交互。在其他平臺上,我一般與chromedriver存在相同的問題。 –
@RoddyoftheFrozenPeas你知道寫一個更美麗的方式嗎?喜歡有什麼樣的承諾或我可以聽的東西,並將它們鏈接在一起,而不是做一個不可預測的'browser.sleep()'? – Lansana