【问题标题】:Check text in a DOM element using Protractor使用量角器检查 DOM 元素中的文本
【发布时间】:2015-03-13 01:58:34
【问题描述】:

这是我在使用 Protractor 测试 Angular 应用程序时尝试做的事情。我想得到某个元素,有点像这样:

<div class="someClass">
   <p>{{textFromBoundModel}}</p>
</div>

然后获取它的 html,并检查它是否包含我期望的文本。

我尝试通过cssContainingText 方法首先获取此元素,但效果不佳(不知道为什么;可能是因为段落中的文本是动态生成的)。所以现在我只使用by.css 定位器来获取这个元素。接下来,我正在检查它是否包含我正在测试的文本:

// this is Cucumber.js    

this.Then(/^Doing my step"$/, function(callback){
    var el = element(by.css('.someClass'));            
    expect(el).to.contain("some interesting string");
    callback();
 });
});

但这不起作用。问题是,el 是某种定位器对象,我不知道如何获取它找到的元素的 html 以便针对该 html 进行测试。试过.getText(),没有成功。

有什么建议吗?

【问题讨论】:

    标签: angularjs protractor cucumberjs


    【解决方案1】:

    做:

    expect(el.getText()).to.eventually.contain("some interesting string");
    

    工作?

    我相信您需要.eventually 来等待承诺解决,并且您需要.getText() 来获取div 的内容。

    请参阅the cucumber sample 头部的 chai-as-promised 内容。

    【讨论】:

    • 是的,chai-as-promised 最终 :-) 解决了这个问题。谢谢!
    【解决方案2】:

    试试下面对我有用的解决方案

    解决方案 1:

    expect(page.getTitleText()).toContain('my app is running!');
    

    解决方案 2:

    expect<any>(page.getTitleText()).toEqual('my app is running!');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 1970-01-01
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      相关资源
      最近更新 更多