如何通过标题或Protractor中的任何特定属性值定位元素?

时间:2018-05-25 10:59:01

标签: protractor

我有一个没有定义Id的元素。类名不允许我唯一地标识元素。 这就是为什么我想使用roleheader属性找到它的原因:

<p-dialog header="Deleting" showeffect="fade" role="dialog"
class="ng-tns"> </p-dialog>

我应该如何在Protractor / Selenium Webdriver中做到这一点? 我可以通过xpath实现这一点,但据我所知,它建议avoid it at all。 我是否需要使用addLocator定义自己的定位器,还是有更简单的解决方案?

1 个答案:

答案 0 :(得分:1)

量角器建议使用css选择器作为第一个选项,在某些情况下,当css选择器可以解决您的问题时,xpath作为辅助选项。

此类建议的主要原因考虑如下:

  1. xpath并不比css选择器快
  2. xpath在某些浏览器中区分大小写
  3. 用于较低的IE,如6不支持xpath本地
  4. xpath通常比css选择器长,以找到相同的元素
  5. 但是css选择器有两个缺点,xpath可以做到:

    1. 无法按文字找到元素
    2. 无法找到父元素(只能向下找)
    3. 对于您的情况,您可以尝试以下定位器:

      // css selector
      p-dialog[header="Deleting"]
      p-dialog[role="dialog"]
      p-dialog[header="Deleting"][role="dialog"]