量角器得到 ocurrence 的第二个元素

Protractor get the second element of an ocurrence

提问人:DJ22T 提问时间:6/2/2022 更新时间:6/2/2022 访问量:59

问:

我有一个问题,我对量角器很陌生。

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

所以我现在拥有的是一个带有文本的标签,要使用 XPath 检索元素,我执行以下操作:spanSummary

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

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

  • 失败:元素不可交互

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

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

并出现以下错误:

失败:定位器无效

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

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

但是,我仍然收到相同的错误:

失败:定位器无效

有没有办法让我得到这第二个元素?

Selenium XPath 自动测试 量角

评论


答:

1赞 Md. Fazlul Hoque 6/2/2022 #1

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

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

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

评论

1赞 DJ22T 6/2/2022
不幸的是,它给出了以下错误:失败:未定义元素
1赞 Md. Fazlul Hoque 6/2/2022
@Danny22 请看更新后的答案
0赞 DJ22T 6/2/2022
现在它确实奏效了,你介意更新第一段来解释你的建议而不是元素吗,我会接受你的回答。
0赞 K. B. 6/2/2022 #2

你可以试试这个XPath,它有额外的括号,你已经快到了。

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

参考:XPath 查询以获取元素的第 n 个实例