我想测试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测试中挣扎过?
答案 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();