角度材料md-select - e2e量角器测试 - 元素不可见

时间:2016-06-15 05:34:02

标签: angularjs angular-material e2e-testing

我想测试md-select组件,并且我坚持点击md-option,返回错误:

Failed: element not visible

我尝试按照本文中的说明操作:https://thecattlecrew.net/2015/03/05/automated-ui-tests-for-an-angularjs-material-select-item-with-protractor/。我的测试代码如下:

element( by.model('vm.model') ).click(); //ok, the select is opened
browser.waitForAngular(); // also tried with browser.driver.sleep(5000);
element( by.css('.md-select-menu-container md-option[value="6"]')).click();
browser.waitForAngular();

是否有人已经在md-select e2e测试中挣扎过?

3 个答案:

答案 0 :(得分:2)

问题是我的css选择器返回了多个结果,2个结果是准确的。我无法验证第二个md-option的位置。但是我通过添加md-active类来缩小我的选择器,现在它可以正常工作。

这是我的完整代码:

element( by.model('vm.model') ).click(); 
browser.waitForAngular(); 
element( by.css('.md-select-menu-container.md-active md-option[value="6"]')).click();
browser.waitForAngular();

答案 1 :(得分:1)

如果您到达此处并希望选择不可见的选项,请注意。对我来说,它抛出一个异常,但在添加el.isPresent()之后,由于某种原因它变得可选:

static async mdSelectByModelContainingText(model: string, text: string) {
    await element(by.model(model)).click();
    await browser.waitForAngular(); 

    let el = element(by.cssContainingText('.md-select-menu-container.md-active md-option > div.md-text', text));
    if (!(await el.isPresent())) {
        throw Error('Not clickable');
    }
    await el.click();
    await browser.waitForAngular(); 
}

答案 2 :(得分:0)

css选择器的问题无法找到md-option。我认为这会有所帮助

element( by.model('vm.model') ).click(); 
browser.waitForAngular();
element( by.css('.md-select-menu-container.md-active md-select-menu>* md-option[value='6'].md-checkbox-enabled]')).click();
browser.waitForAngular();