【问题标题】:Protractor: Get the underlying JS object of a DOM elementProtractor:获取一个DOM元素的底层JS对象
【发布时间】:2014-11-07 03:56:49
【问题描述】:

我有以下简单的paper-tabs 元素,我希望能够在量角器测试中对此进行断言:

<paper-tabs>
    <paper-tab ng-repeat='tab in tabs'>
        {{tab.title}}
    </paper-tab>
</paper-tabs>

在量角器测试中,我希望能够执行以下操作:

it('url to tab', function() {
    browser.get('#/my/url');
    var tabs = element(by.css('header paper-tabs'));
    tabs.getElement()(function(elem) {
        expect(elem.selected).toBe(0);

    });
});

请注意selected 是一个JS 属性而不是HTML 属性,正如polymer documentation 中所述:

使用 selected 属性获取或设置选定的选项卡。

因此以下只是返回null

tabs.getAttribute('selected')

难道没有办法获取底层的 JS 对象吗?例如,就像我在 Chrome 控制台中输入的一样:

> document.getElementsByTagName('paper-tabs')[0].selected
0

我在 Protractor 的 API 中找不到任何可以满足我的目的的东西,我想知道其他人是如何做到这一点的?

谢谢!

【问题讨论】:

  • 我有点希望能够访问 DOM 元素本身,而不是通过 String 注入 JS,这不是 IMO 最优雅的解决方案。但是,如果这是唯一可行的方法?也许我的整个方法都错了?谢谢。

标签: javascript angularjs polymer protractor


【解决方案1】:

试试这个:

it('url to tab', function() {
  browser.get('#/my/url');
  // Get all the tabs.
  var tabs = $$('[paper-tab]');    
  // select the first tab.
  expect(tabs.get(0).getAttribute('selected')).toBe(0);    
});

【讨论】:

  • 谢谢,但这似乎不起作用。我认为它获取 html 属性而不是 DOM 对象本身。我开始意识到没有办法对 DOM 对象进行断言,这很痛苦 /:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-25
  • 2012-08-06
  • 2015-03-17
  • 2018-12-17
  • 1970-01-01
  • 1970-01-01
  • 2021-05-29
相关资源
最近更新 更多