我有一个量角器茉莉花测试,试图在该页面上检查所有字段是否为空白。我使用for循环编写了一个简单的测试,该测试有效。现在,我的问题是我正在尝试遵循量角器/茉莉花最佳实践,即每个预期条件只能进行一次测试。如何将此代码更改为仅一个预期条件?
这是我写的测试:
it("should check that all input fields are blank", function() {
allInputs.then(function(elements) {
elements.forEach(function(element){
expect(element.getText()).toEqual("");
});
});
});
简而言之:您可以做到这一点- expect(allInputs.getText()).toEqual("")
。
更多详细信息:element.all().getText()
返回一个数组,其中包含所有子元素的文本值,并且由于您期望这些值是空白,所以只需检查总字符串是否为空白。
回答您的通用问题
“当我们需要执行多个验证时,我们如何处理方案”
预期条件提供条件选项-如OR,AND等。请在此处参考官方文档
var EC = protractor.ExpectedConditions;
var titleContainsFoo = EC.titleContains('Foo');
var titleIsNotFooBar = EC.not(EC.titleIs('FooBar'));
// Waits for title to contain 'Foo', but is not 'FooBar'
browser.wait(EC.and(titleContainsFoo, titleIsNotFooBar), 5000);
如果您想将多个期望分组
Promise.all[
expect(allInputs.getText()).toEqual(""),
expect(allOutputs.getText()).toEqual("")
].then(function(){
done();
})
更新1:Promise.all
上面的语法不正确。它应该是Promise.all([Array of Promises])
我缺少弯括号的地方。
这是正确的方法
describe('Describe something', function() {
it('check check', function(done) {
browser.get('http://www.protractortest.org/#/')
Promise.all([
expect(browser.getCurrentUrl()).toContain('protractortest'),
expect(browser.getCurrentUrl()).toContain('org')]).then(function() {
done();
}).catch(function() {
done.fail('somehow the Url is incorrect');
})
browser.sleep(10000)
});
});
这使我们可以灵活地将测试用例中的所有验证分组到一个Promise中(在Array中提供期望返回的所有promise)。这将帮助我们对所有断言进行分组,并通过/失败测试用例,并为所有验证集抛出自定义错误消息
更新2:如上所述。element.all().getText()
返回一个数组并进行比较,我错误地将一个Array对象与String对象进行了array.join()
比较。
allInputs.getText().then(function(values){
expect(values.join('')).toEqual('')
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句