我的测试没有检测到列表元素 - 量角器

时间:2018-05-03 17:22:06

标签: javascript protractor

我有以下HTML:

<ul class="chosen-results">
<li class="active-result result-selected highlighted" data-option-array-index="0" style="">All Jobs</li>
<li class="active-result" data-option-array-index="1" style="">My Jobs</li>
<li class="active-result" data-option-array-index="2" style="">Passed Jobs</li>
<li class="active-result" data-option-array-index="3" style="">Failed Jobs</li>
</ul>

我使用以下代码返回每个列表元素,但是当测试运行时,它不会检测到任何这些元素。

static get allJobs(){
       return element(By.className('data-option-array-index="0"'));
   }

   static get myJobs(){
       return element(By.className('data-option-array-index="1"'));
   }

   static get passedJobs(){
       return element(By.className('data-option-array-index="2"'));
   }

   static get failedJobs(){
       return element(By.className('data-option-array-index="3"'));
   }

有人能判断我是否正确归还了这些元素。

2 个答案:

答案 0 :(得分:3)

那些不是课程。您需要使用

By.css('[data-option-array-index="0"]')
By.css('[data-option-array-index="1"]')
By.css('[data-option-array-index="2"]')
By.css('[data-option-array-index="3"]')

答案 1 :(得分:0)

是的,因为Dan Crews说它不是类名,它是元素中的属性。除此之外,如果你想要比给出数组索引更具体。 以下将是一个很好的解决方案

By.cssContainingText('All Jobs')
By.cssContainingText('My Jobs')
By.cssContainingText('Passed Jobs')
By.cssContainingText('Failed Jobs')

以上定位器/选择器也是特定量角器。即使存在具有相同类/属性的隐藏元素,也要完全找到元素。

因为它找到了用户启用且可见的唯一名称。

为了找到当前选择的元素,您可以使用如下所示的类名。

return $('.active-result.result-selected.highlighted')

如果它确实满足您的问题,请投票或选择正确的答案。如果您需要更多详细信息,请发表评论。