无法在元素量角器中找到文本

时间:2018-04-18 11:50:13

标签: xpath protractor

我想验证使用量角器在页面上是否存在某些文字。

附件是我要验证的页面标记,我要验证的文本是:

Vi har mottatt din melding. Vi ser på denne så snart som mulig,
normalt innen neste arbeidsdag.

使用xpath不起作用:

var xpath = '//*[@id="app"]/div/section[2]/article/section[2]/div[1]/div[2]/span[2]';

var txt = element(by.xpath(xpath)).getText();

expect(txt).toEqual(
    'Vi har mottatt din melding. Vi ser på denne så snart som mulig,' +
    ' normalt innen neste arbeidsdag.');

任何提示?

2 个答案:

答案 0 :(得分:0)

尝试

const EC = protractor.ExpectedConditions;    
expect(EC.presenceOf(element(by.xpath('//span[text()='Vi har mottatt din melding. Vi ser på denne så snart som mulig, normalt innen neste arbeidsdag.']))));

//告诉xpath你正在做一个相对路径,所以在英语中该命令应该期望存在包含你正在寻找的文本的跨度。

答案 1 :(得分:0)

定义异步你的函数(或测试)里面有getText(),然后 尝试使用async getText(),它返回一个promise:

var txt = await element(by.xpath(xpath)).getText();

例如,我的测试功能如下:

export async function getSelectOptionAutocompleteByText(select: ElementFinder, text: string): promise.Promise<ElementFinder> {
  let ret: any;
  const res = await select.all(by.cssContainingText('li', text));
  for (const el of res) {
    const ris = await el.getText(); // -----this is what i mean----
    if (ris === text) {
      ret = el;
      return ret;
    }
  }
  return ret;
}