量角器E2E和角度

时间:2016-01-28 15:49:02

标签: javascript angularjs protractor angularjs-e2e

我无法弄清楚如何在单页应用程序中定位元素。

我正在测试大部分经过身份验证的网页,因此使用以下内容模拟了量角器数据:ngMockE2E$httpBackend

我们说有4页/次浏览:主页 | 关于 | 设置 | 退出

设置 页面结构大致为:

<div ng-view class="ng-scope">
  <div class="row ng-scope" ng-controller="SettingsCtrl as ctrl">
    <h1>Settings Main Page</h1>
    <div ng-if="show.more">
      <a href="#/more/info">More Info</a>
      [...]
    </div>
  </div>
</div>

如果您点击更多信息链接,该视图将更改为ng-controller中唯一主要差异的页面。

<div ng-view class="ng-scope">
  <div class="row ng-scope" ng-controller="SettingsCtrl">
    <h2>Settings More Info Page</h2>
    [...]
  </div>
</div>

在量角器中,我无法弄清楚如何访问更多信息页面中的元素 - 但我可以在主要设置页面上找到这些元素。

例如:

var main_title = element(by.tagName('h1')).isPresent();
expect(main_title).toBe(true); // Will return true

var moreInfo_title = element(by.tagName('h2')).isPresent();
expect(moreInfo_title).toBe(true); // Will return false

为什么我无法访问视图中的元素?

2 个答案:

答案 0 :(得分:1)

您可能需要等待h2元素的presence

// click "More info"

var EC = protractor.ExpectedConditions;
var moreInfo_title = element(by.tagName('h2'));  

browser.wait(EC.presenceOf(moreInfo_title), 5000);

expect(moreInfo_title.isPresent()).toBe(true);

答案 1 :(得分:0)

您应该尝试点击该链接,然后检查是否存在更多信息标题。

var main_title = element(by.tagName('h1')).isPresent();
expect(main_title).toBe(true);

var link = element(by.linkText('More Info'));
link.click().then(function() {
   var moreInfo_title = element(by.tagName('h2')).isPresent();
   expect(moreInfo_title).toBe(true);
});