我有以下的测试(用于brievity的缘故,我已经删除了页面对象):量角器:遍历选项工作,如果调试,但没有如果没有
element(by.model("elc.search.placeOfBirth")) //this is a select
element(by.model("elc.search.placeOfBirth")).all(by.tagName("option")).then(function(options) {
for(var i = 0; i < options.length; i++) {
options[i].getText().then(function(text) {
if(text !== "---") {
element(by.model("elc.search.placeOfBirth")).sendKeys(text);
var firstRow = element.all(by.repeater("employee in elc.filtered")).first();
firstRow.all(by.tagName("td")).then(function(cells) {
expect(cells[4].getText()).toBe(text);
});
var lastRow = element.all(by.repeater("employee in elc.filtered")).last();
lastRow.all(by.tagName("td")).then(function(cells) {
expect(cells[4].getText()).toBe(text);
});
}
});
}
});
让我解释这里发生了什么。我有一张桌子和一个上面的选择框。该表的第5列与选择组合框有关,我在表格的ng-repeat中使用的数组将通过组合框中的值进行过滤。我想在这里做的是去查看组合框中的值,选择一个特定的值并确保该表在第一行和最后一行中具有该值。
如果我但browser.debugger()
在循环中,这工作和测试通过,但是,如果我不调试测试似乎太快,我的表不会更新得足够快,测试失败。我猜这是因为承诺没有解决,代码仍在运行,但我不确定我在等待什么诺言,因为我也试图在我之后立即输入.then(function() {...}
将密钥发送到组合框。
尽管当我将它提取到一个单独的函数中时它看起来会变慢,但我的组合框只能获得第一次以此方式发送的键并忽略其他值(我添加了一个console.log以确保不同的文本值在那里)。任何想法为什么组合框忽略发送更多的密钥? 此外,为什么代码在我将其提取到函数中时起作用,它会产生什么不同? – user2352164
从我所知道的情况来看,第二次调用sendkeys时实际上并不会删除第一次发送的密钥。这会导致问题,因为我无法清除()实际的选择框。有什么建议么? – user2352164
@ user2352164您必须手动清除文本框或组合框值。只要你输入新的东西,它就会增加现有的价值。为了除去现有数据,在输入新数据之前,在函数结尾处包含一个'element(by.model(“elc.search.placeOfBirth”))。clear()'命令。希望它有帮助 –