我正在测试网页,需要使用此转发器和模型以确保输入了正确的文本。
我尝试这样做以获得符合我想要的预期文本:
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'。
失败的唯一原因是因为有空格的开括号和右括号。有人可以帮我找到解决方案并解释括号出现的原因吗?
答案 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");