如何结合量角器中的多个期望条件?

拉维

我有一个量角器茉莉花测试,试图在该页面上检查所有字段是否为空白。我使用for循环编写了一个简单的测试,该测试有效。现在,我的问题是我正在尝试遵循量角器/茉莉花最佳实践,即每个预期条件只能进行一次测试。如何将此代码更改为仅一个预期条件?

这是我写的测试:

it("should check that all input fields are blank", function() {
    allInputs.then(function(elements) {
        elements.forEach(function(element){
            expect(element.getText()).toEqual("");
        });
    });
});
AdityaReddy

简而言之:您可以做到这一点- 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章