选择元素量角器

时间:2015-06-03 10:21:35

标签: angularjs protractor

我在尝试编写end2end测试时遇到大问题。

这是我的场景:我想计算给定元素的选项数量。

不要想要做的是使用id,所以我试图选择它而不污染html。

让我们看看html:

<form class="catalogue-sidebar">
  ...
  <ki-multi-select-option>
    <select>
      ...
      <option></option>
      ...
    </select>
  </ki-multi-select-option><!-- ki-multi-select-option -->
  ...
</form><!-- .catalogue-sidebar -->

我这里有几个ki-multi-select-option指令。我需要计算一下,第二个选项的数量。

如何选择?

使用id将是这样的(这是有效的):

var colorsOptions = browser.findElements( by.css( '#filter-colors select > option' ) );
colorsOptions.then( function( elements ) {
  // There is an empty option as default, thats why "greater than 1"
  expect( elements.length ).toBeGreaterThan( 1 );
});

但正如我所说,我想避免将id包括在内进行测试。

我尝试了很多不同的组合但没有成功。

使用jQuery我可以这样做:

$( ".catalogue-sidebar ki-multi-select-option:eq(1)" ).find( 'select > option' )

有人可以帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

仅使用CSS:

var options = element.all(by.css('.catalogue-sidebar ki-multi-select-option:nth-child(1) select option'));

getall进行关联:

var kiWrapper = element.all(by.css('.catalogue-sidebar ki-multi-select-option')).get(1);
var options = kiWrapper.all(by.css('select option'));

现在使用count函数不需要then,因为expect处理webdriver承诺:

expect(options.count()).toBeGreaterThan(1);