【问题标题】:Protractor - How to locate element by custom (non HTML) attributes?量角器 - 如何通过自定义(非 HTML)属性定位元素?
【发布时间】:2014-07-01 00:43:18
【问题描述】:

我正在使用 Selenium WebDriver 和 Protractor 在我的 Angular 项目上运行 e2e 测试。 假设我有一个类似的元素:

<div my-directive my-unique-id="abc123"></div>

如何定位上述元素。 我尝试使用element(by.css('div[my-unique-id="abc123"]'));,但它给出了 NoSuchElementError。

如果我尝试使用 HTML 属性,例如,我想定位:

<a title="myTitle" href="">Click me</a>

我能够使用 element(by.css('a[title="myTitle"]')) 正确定位元素

如果元素没有任何标准的 HTML 属性,我如何定位具有自定义属性的元素?

【问题讨论】:

  • 语法正确。您是否指令呈现为具有属性 my-unique-id="abc123" 的 div?使用开发人员工具检查在浏览器中呈现的元素并使用 $('your-css-selector') 对其进行测试。它应该在量角器中以相同的方式工作。
  • 同意@AndresD,最可能的原因是你的指令用它自己的模板替换了它定义的当前元素。检查 devtools 中的元素以确保您拥有正确的 CSS 选择器。

标签: javascript html angularjs selenium protractor


【解决方案1】:

尝试使用xpath:

element(by.xpath('//div[@my-unique-id="abc123"]'))

或仅按属性

element(by.xpath('//div[@my-unique-id]'))

【讨论】:

    【解决方案2】:

    尝试使用:

    element(by.css('[my-unique-id="abc123"]'))
    

    对于简单的情况,它比 xpath 更容易,更易读。

    更多关于 xpath 语法以及何时有用:http://www.w3schools.com/xml/xml_xpath.asp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2021-07-31
      相关资源
      最近更新 更多