量角器获取事件的第二个元素
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
我有一个问题,我是量角器的新手。
我需要通过文本获取元素,目前无法更改 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