javascript - Protractor :在页面中查找文本

标签 javascript testing protractor

我创建了此步骤定义来检查网页中是否存在给定文本。代码工作正常,但有时,特别是当我查找长文本时,即使页面中存在该文本,我也会收到错误。

代码是这样的:

this.Then(/^The text "([^"]*)" exists in page$/, function(myText, callback){

    browser.sleep(10000);

    var selectedElement = element(by.xpath("//*[. = '" + myText + "']"));

    expect(selectedElement.isPresent()).to.eventually.equal(true, "This text is not present in page").and.notify(callback);    

  });

基本上我做了三件事:

  1. 我等待 10 秒以确保 DOM 的所有元素均已加载。
  2. 我搜索一个包含我要查找的文本的元素(div、p、标签或其他)。
  3. 我检查该元素是否存在,否则会出现错误。

您能告诉我是否有更好的方法吗?在步骤定义的开头使用 browser.sleep() 来等待 DOM 加载是否正确?

重要提示:我没有使用 Angularjs

提前谢谢您。

最佳答案

问题很可能是因为您使用的是严格的文本匹配,但所需文本周围可能有额外的空格或换行符。您可以尝试使用 contains()如果适用:

element(by.xpath("//*[contains(., '" + myText + "')]"));

或者,与 normalize-space() :

element(by.xpath("//*[text()[normalize-space() = '" + myText + "']]"));

顺便说一句,使用 browser.sleep() 等待页面加载不太可靠,应该避免。有更好的方法 - browser.wait()Expected Conditions .

关于javascript - Protractor :在页面中查找文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34732410/

相关文章:

javascript - 为什么我无法使用 PhantomJS 2.1.1 呈现我的 ReactJS 应用程序?

javascript - 找不到数据时隐藏和显示报告区域

javascript - 为什么这个 Javascript RegExp 测试不起作用?

javascript - Protractor 测试用例文档

javascript - 如何开发自定义 Protractor 定位器?

javascript - jquery中如何向下滚动

php - Yii: Fixer - 我怎样才能创建固定装置之间的关系?

javascript - 我可以将半实现的模拟转换为具有流类型的类型吗?

node.js - ECONNREFUSED 127.0.0.1 :3000 at TCPConnectWrap. afterConnect [as oncomplete] errno : 'ECONNREFUSED' ,

javascript - Protractor - 在 For Each 内单击未按预期运行