迭代直到找到匹配的文本

时间:2018-11-14 09:30:42

标签: protractor

我正在编写一个测试,该测试应迭代直到找到部分匹配的文本。一旦找到,它应该做一些事情。这是我的代码。

let getName = await $$('.button').getText();
if (getName === 'New name') {
 // do something here

}

即使存在匹配的名称,我的测试也不会重复。它还应考虑进行局部测试,例如新名称1。

感谢您的建议。

1 个答案:

答案 0 :(得分:0)

由于您的问题缺少详细信息,我的答案是一片黑暗,但我会尽力猜测您的问题。

$$().getText()返回字符串数组,因此您的代码必须为

let names = await $$('.button').getText();

for (let i=0; i<names.length; i++) {
  if (names[i].includes('New name')) {
    // do something here
  }
}

但是当您await $$().getText()的元素数量超过10个时,请准备好面对此错误Random occurrences of Failed: ECONNREFUSED connect ECONNREFUSED 127.0.0.1 when running protractor tests

实际上,我必须基于一个假设,即您需要与符合条件的第一个元素进行交互,在这里还要加上另一个猜测

let $newNameElement = await $$('.button').filter( $elem =>
  (await $elem.getText()).toLowerCase().includes('new name');
).get(0);

// do whatever you want with your $newNameElement