重复的链接标题,我如何找到我想要的?

时间:2016-05-06 14:06:27

标签: java selenium-webdriver

我在webapp左侧有一个链接列表,我自动化了。其中一个主菜单项称为" User Management"。还有第二个链接,我想要的那个具有相同的名称,但是是一个不同主要项目的子项目。

当然,如果我尝试通过链接标题识别它,它将始终找到第一个,主要的不是我想要的。我尝试过xpath和其他一些东西,但我无法弄明白。这是两者的html。

 <td id="mainleftlinkzoneover" class="mainleftlinks" width="151" title="User Management">  User Management</td>

 <td class="currentsubleftlinks" valign="top" title="User Management">  User Management</td>

请注意,这不是类电流链接下的唯一链接,还有其他三个标题不同。

我希望有一种方法可以说是(链接标题是用户管理)和(td类是currentsubleftlinks)然后选择那个并点击它。

感谢任何帮助!

3 个答案:

答案 0 :(得分:0)

您的第一个元素具有ID ,因此您可以使用它来定位元素。 在CssSelector中,它将是“#mainleftlinkzoneover”

要找到第二个,您可以尝试再次使用CssSelector或XPath。

使用Css,您可以尝试找到特定的孩子".currentsubleftlinks:nth-child(2)"

使用XPath尝试: "//td[@title='User Management']"

答案 1 :(得分:0)

即使它具有唯一值,我也不建议使用标题名称。我认为更有结构性的方法是有利的,例如使用CSS。使用CSS,您可以逐渐缩小您感兴趣的区域,从而避免元素名称可能出现的问题。在这种情况下,你没有提供整个页面,所以我不能给出一个完整的例子,但你提到的元素可以像这样选择:

@FindBy(css = SOME_ENCLOSING_CSS + "$.currentsubleftlinks")
private WebElement elementName;

答案 2 :(得分:0)

首先,使用以下作为cssSelector:

#mainleftlinkzoneover.mainleftlinks[width^='151']

单击第二个,使用下面的cssSelector:

td.currentsubleftlinks[valign^='top']