Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 选择';在包含某些链接文本的元素之前_Java_Html_Css_Selenium_Xpath - Fatal编程技术网

Java 选择';在包含某些链接文本的元素之前

Java 选择';在包含某些链接文本的元素之前,java,html,css,selenium,xpath,Java,Html,Css,Selenium,Xpath,使用selenium,我试图单击一个出现在链接文本为“Main”的元素前面的元素。我正在尝试单击此图像中突出显示的元素: 我要单击的元素和它后面的元素都在同一元素中,如图所示,id=5 此元素对应于下面突出显示的整个行。注意它的链接文本是如何“绿色”的,就像它下面的元素一样。因此,我不能对要单击的元素使用xpath/css选择器 我正在尝试单击突出显示的“绿色”。这就是为什么我试图在链接文本为“Main”的元素之前单击元素 我有这段代码,但我不知道如何在这段代码匹配的元素之前获取元素:Web

使用selenium,我试图单击一个出现在链接文本为“Main”的
元素前面的
元素。我正在尝试单击此图像中突出显示的元素:

我要单击的
元素和它后面的元素都在同一
元素中,如图所示,id=5

此元素对应于下面突出显示的整个行。注意它的链接文本是如何“绿色”的,就像它下面的元素一样。因此,我不能对要单击的
元素使用xpath/css选择器

我正在尝试单击突出显示的“绿色”。这就是为什么我试图在链接文本为“Main”的元素之前单击
元素

我有这段代码,但我不知道如何在这段代码匹配的元素之前获取元素:
WebElement templateFound=driver.findElement(By.linkText(“Main”)


任何有帮助的,谢谢

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

您可以使用:

基本上,这将为您提供一个
td
元素,该元素在后面的第一个
td
同级元素中有一个与文本“Main”的链接


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

前面的轴表示上下文前面的所有节点 文档中的节点,但任何祖先、属性和命名空间除外 节点


我怀疑有一个
a
元素有“绿色”文本..可能应该是
/a[.='Main']/../td[a='Green']
/a[.='Main']/../td/a[.='Green']
。谢谢。这个xpath是否与alecxe对
previous::td
的回答一样可靠。您的答案似乎涉及更多的组件,这可能会导致问题。如果我错了,请原谅,谢谢。谢谢alecxe,
previous::td
可能正在工作,但它选择了整个
td
元素,但我需要单击它的子
a
元素。我道歉。所以我尝试使用
templatefind.findElement(By.xpath(“preference::td/a”)
但它仍然单击整个
td
。知道为什么吗?Thanks@Hurmle表达式看起来正确,应该与
td
中的
a
元素匹配。谢谢。谢谢alecxe,我正在尝试您对
//td[following sibling::td[1]/a='Main']
的第一个建议,但是这会选择
td
元素,而不是
a
链接,该链接包含'Green'。如何调整此表达式,使其仅选择
a
。试试你自己:@JimJim肯定,它只是
//td[跟随兄弟姐妹::td[1]/a='Main']/a
。是的,你知道了!谢谢。
//a[.='Main']/../../td[.='Green']
//td[following-sibling::td[1]/a = 'Main']
WebElement templateFound = driver.findElement(By.linkText("Main"));
templateFound.findElement(By.xpath("preceding::td"));