一种使用Selenium定位元素的方法

时间:2017-11-06 11:42:43

标签: java html selenium

我试图找到一个href元素一段时间没有任何成功。

String EMAIL_NOTIFICATIONS_PAGE = "[ng-href=\"#/settings/notifications/48\"]";

号码不断变化。有时硒能够定位元素并按下它,但有时却不能。我注意到这个数字在不断变化。

我附上2张截图。

有关如何找到其href在运行中更改的元素的任何建议吗?

the desired element

the locator

5 个答案:

答案 0 :(得分:1)

如果动态更改,您可以尝试以下方法:

driver.findElement(By.xpath(".//a[contains(text(), 'Email notification settings')]")); 

这取决于文字,这不是最佳做法,但它可能应该有效。

答案 1 :(得分:0)

您可以找到所有href元素,并将其文本检查为特定内容,您的场合为Email notification settings。如果我不能使用干净简单的方法来定位元素,我总是使用这种方法。

答案 2 :(得分:0)

  1. 您可以使用CSS选择器识别所有标签:.t6.s10.clickable.no-underline

  2. 然后使用列表(数组)中的索引访问所需元素。

答案 3 :(得分:0)

你也可以试试

driver.FindElement(By.LinkText("Email notification settings"));

答案 4 :(得分:0)

您可以使用以下任何XPath:

//a[contains(text(),'Email notification settings')]

或:

//a[contains(@href,'#settings/notifications/18')]

或:

//a[@href='#settings/notifications/18']