Angular 2 e2e protactor:如果我不使用browser.sleep(),我的测试就会失败。为什么?

时间:2017-09-28 13:07:20

标签: angular protractor

我正在编写一些e2e测试,在填写表单并尝试在我制作的自定义选择下拉组件中选择项目时,我被迫使用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();
            });
        });
    });
});

失败的测试给了我这个错误:

  
      
  • 失败:未知错误:元素<button _ngcontent-c16="" class="btn btn--select" type="button">...</button>在点上无法点击   (514,439)。其他元素会收到点击:...   (会话信息:chrome = 61.0.3163.100)   (驱动信息:chromedriver = 2.32.498537(cb2f855cbc7b82e20387eaf9a43f6b99b6105061),platform = Mac OS X 10.12.5   x86_64的)
  •   

1 个答案:

答案 0 :(得分:0)

通过实际处理代码中的特定错误来解决此问题。错误和问题解决了browser.wait(until.elementToBeClickable(...))元素上的杠杆button,因为错误表示错误发生时该按钮无法点击。