我正在使用量角器进行我的应用程序的e2e测试。但是,我在更新记录时要构建一个新值数组,以便与旧值进行比较,以确保它们正确更新。
其中一个字段是选择菜单,所以我想从选项中抓取文本以推入数组。
我正在使用选择选项:
textFieldDidEndEditing
这一切都很可爱。我现在希望能够获取该选项的文本而不是值,以推入我的数组。我尝试过以下方法:
element(by.id(fieldName6)).click().then(function() {
element(by.css('#' + fieldName6 + ' option:nth-child(2)')).click();
});
推送newValues.push(browser.executeScript("$('#" + fieldName6 + " option:nth-child(3)').text()"));
和
Promise::17234 {[[PromiseStatus]]: "pending"}
推送newValues.push(element(by.css('#' + fieldName6)).$('option:checked').getText());
。
现在相当困难。任何帮助将不胜感激。
答案 0 :(得分:1)
Protractor
和WebDriverJS
完全基于concept of promises。 element(by.css('#' + fieldName6)).$('option:checked').getText()
会向您返回一个承诺,该承诺将通过控制流 解析为选项文本。
您可以将承诺收集到newValues
数组中,但是,当您需要实际值时,您必须解决内部的承诺。我会使用protractor.promise.all()
:
protractor.promise.all(newValues).then(function (resolvedValues) {
console.log(resolvedValues);
});
请注意,如果您只想在newValues
中声明值,则可以直接使用expect()
- 它知道传入承诺的时间并在执行检查之前隐式解析承诺:< / p>
expect(newValues).toEqual(["option 1", "option 2"]);