量角器获取事件的第二个元素

Protractor get the second element of an ocurrence

我有一个问题,我是量角器的新手。

我需要通过文本获取元素,目前无法更改 UI 的构建方式以使用更好的选择器。

所以我现在拥有的是一个 span 标签,其中包含文本 Summary,为了使用 XPath 检索元素,我执行以下操作:

const myElement = element(by.xpath("//span[text()='Summary']"));

当屏幕上只有一个元素时,这适用于第一次出现,但是,当有两个元素时,它会失败并出现以下错误:

  • Failed: element not interactable

可能是因为它试图访问第一个被切换的元素。 所以我尝试在阅读时访问元素索引:

element(by.xpath("//span[text()='Summary']")[1]);

并出现以下错误:

Failed: Invalid locator

我在某处读到值从 1 而不是 0 开始,所以我尝试了:

element(by.xpath("//span[text()='Summary']")[2]);

但是,我仍然遇到同样的错误:

Failed: Invalid locator

有什么办法可以得到这些第二个元素吗?

当您使用列表切片时,存在不止一个元素。所以你可以尝试使用 elements 而不是 element

element(by.xpath("(//span[text()='Summary'])[2]");

element(by.xpath("(//span[contains(text(),'Summary')])[2]");

你可以试试这个 XPath,它有额外的括号,你已经差不多了。

(//span[text()='Summary'])[2]

参考: XPath query to get nth instance of an element