量角器预期返回括号而不是引号

时间:2016-12-13 20:47:02

标签: javascript angularjs selenium testing protractor

我正在测试网页,需要使用此转发器和模型以确保输入了正确的文本。

我尝试这样做以获得符合我想要的预期文本:

expect(element.all(by.repeater('n in [].constructor(product.config.num_streamers) track by $index')).get(1).all(by.model('name.value')).getAttribute('value')).toEqual("testtext");

我的问题是它显示了一个带括号的对象,而不仅仅是引号中的文本。这是我失败的例外:  期望['testtext']等于'testtext'。

失败的唯一原因是因为有空格的开括号和右括号。有人可以帮我找到解决方案并解释括号出现的原因吗?

1 个答案:

答案 0 :(得分:3)

您在元素数组(在Protractor中称为getText())上调用ElementArrayFinder,并返回一个解析为文本数组的promise 所有匹配元素。

由于您确实需要单个元素,因此请使用.element代替.all

expect(element.all(by.repeater('n in [].constructor(product.config.num_streamers) track by $index')).get(1).element(by.model('name.value')).getAttribute('value')).toEqual("testtext");

附加说明:

  • 代替toEqual(),您也可以使用toContain() matcher
  • 您不需要track by中的by.repeater()部分 - 量角器会自动忽略它
  • 使代码更具可读性,在匹配器之外声明元素 - 或者更好的是,应用Page Object pattern

    var elm = element.all(by.repeater('n in [].constructor(product.config.num_streamers)')).get(1).element(by.model('name.value'));
    expect(elm.getAttribute('value')).toEqual("testtext");