【问题标题】:Protractor: How do I click on an element using the href substring or span substring?量角器:如何使用 href 子字符串或 span 子字符串单击元素?
【发布时间】:2016-09-22 00:49:52
【问题描述】:

以下几行是我希望能够使用量角器点击的元素的信息。

    <hsx-nav-menu-group hsx-html-element> == $0
      <hsx-nav-menu-info>
        <i hsx-html-element hsx-icon>
          <svg>
            <use xlink:href="#icon-so"></use>
          </svg>
        </i>
        <span>Service Orders</span>
      </hsx-nav-menu-info>
    </div>

我已经能够通过 xpath 来单击它,但我想找到并单击元素,最好使用 href 子字符串或 span 子字符串。

【问题讨论】:

  • 看起来 Protractor 不支持这个:github.com/angular/protractor/issues/456
  • 我之前在那个网站上。我意识到不支持这些定位器,但我想知道这些定位器能否与 addLocator() 函数一起使用?我已经尝试过,但它不起作用。除了我可能创建了不正确的实现这一事实之外,您能看到它为什么不起作用的任何原因吗?

标签: javascript html selenium protractor href


【解决方案1】:

我想使用 href 子字符串或 span 子字符串定位并单击元素

让我们使用Service Orders 文本来创建定位器:

element(by.xpath("//hsx-nav-menu-info[span = 'Service Orders']"));

不过,这仍然是一个 XPath 表达式。


或者,您可以使用filter()

$$("hsx-nav-menu-info").filter(function (useElm) {
    return useElm.$("use").getAttribute("xlink:href").then(function (href) {
        return href === "#icon-so";
    });
}).first().click();

【讨论】:

  • 谢谢。我主要想要一种方法来使用文本“#icon-so”作为 定位器中的 href 来定位元素,因为我正在使用具有类似定位器的其他元素,但其中更多的元素具有 定位器而不是 .
  • @J.Chang gotcha,用替代选项更新了答案,请检查。
  • 我目前收到一条错误消息“失败:未知错误:元素在点 (13, 438) 不可点击。其他元素将收到点击:... svg>。”
猜你喜欢
  • 1970-01-01
  • 2019-01-28
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 2020-08-23
  • 1970-01-01
  • 1970-01-01
  • 2013-10-26
相关资源
最近更新 更多