量角器,如果其他类具有相同的类名,如何获取元素

时间:2018-06-05 13:39:42

标签: javascript protractor cucumber classname

我正在使用带有Cucumber的Protractor进行测试,但我无法获得一个元素,因为classname与其他类相同,并且没有其他属性。 我怎样才能得到这个元素? 元素是:“tileGrid内容”。 我不能使用xpath导致有时编辑页面。

这是我的html:

<div class="tileGrid content">
  <div class="spacing-container undefined">
    <div class="title">
      <h3 class="h2 heading">External Services</h3>
    </div>
  </div>
</div>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我想象你的结构类似于:

<div>
  <div class="tileGrid content">
    <div class="spacing-container undefined">
      <div class="title">
        <h3 class="h2 heading">External Services</h3>
      </div>
    </div>
  </div>
  <div class="tileGrid content">
    <div class="spacing-container undefined">
      <div class="title">
        <h3 class="h2 heading">Other Header</h3>
      </div>
    </div>
  </div>
  <div class="tileGrid content">
    <div class="spacing-container undefined">
      <div class="title">
        <h3 class="h2 heading">Another Header</h3>
      </div>
    </div>
  </div>
 ...
</div>

有几种方法可以与这样的东西互动,但我只举三个例子:

这将查找在其父

中具有div标签的第一个子节点
by.css('div div.content:nth-of-type(1)') 

这将查找其父级

中具有任何标记的第一个子级
by.css('div div.content:nth-child(1)')

这将查找h3标记内的文字,并选择其上方3层的元素:

by.xpath('//*/h3[text()="External Services"]/../../..')

或者找到包含DIV的{​​{1}},H3的文字为H3,如下所示:

External Services