选择包含特定linkText

时间:2015-11-23 04:01:05

标签: java html css selenium xpath

使用selenium我尝试点击<td>元素,该元素出现在<td>元素之前,该元素的linkText为&#34; Main&#34;。我试图点击此图片中突出显示的元素:

screen

我要点击的<td>元素和后面的元素都在同一个<tr>元素中,在图片中显示为id=5

此元素对应于下方突出显示的整个行。注意它的linkText是&#34; Green&#34;就像它下面的元素一样。因此,我无法为要点击的<td>元素使用xpath / css选择器。

enter image description here

我试图点击突出显示的&#34;绿色&#34;。这就是为什么我尝试点击<{1>}元素之前元素&#34; Main&#34;作为linkText。

我有这段代码,但我不知道如何在此代码匹配的元素之前获取元素:<td>

一切有帮助,谢谢

2 个答案:

答案 0 :(得分:2)

您可以使用following-sibling axis

//td[following-sibling::td[1]/a = 'Main']

基本上,这会给你一个td元素,其中包含一个带有文本&#34; Main&#34;的链接。在第一个td兄弟姐妹内。

或者,一旦您按链接文字找到了链接,就可以使用preceding,这将为您提供除父td元素之外的第一个前一个td元素:

  

前一轴表示上下文之前的所有节点   文档中的节点,除了祖先,属性和命名空间   节点

WebElement templateFound = driver.findElement(By.linkText("Main"));
templateFound.findElement(By.xpath("preceding::td"));

答案 1 :(得分:1)

使用XPATH应该很容易。我假设您要选择的td的文字为绿色

//a[.='Main']/../../td[.='Green']