我在弄清楚如何在单页应用程序中定位元素时遇到了麻烦。

我正在测试大部分经过身份验证的页面,因此正在使用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


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

最佳答案

您可能需要等待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);

关于javascript - Protractor E2E和Angular,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35065969/

10-09 15:03