Java 给定bySelector,如何获取该元素子元素的选择器?

Java 给定bySelector,如何获取该元素子元素的选择器?,java,javascript,jquery,css,selenium,Java,Javascript,Jquery,Css,Selenium,这是我的Html: 有时我想和它自己联系,一旦我想获取它的文本,就像在它的More-Info子元素中一样 如何从原始选择器中获取子元素的选择器 我一般地问,因为这个案例对我来说重复了几次如果我清楚地理解了你面临的问题,那么你可以做两件事 首先,编写一个疯狂的选择器来找到它 //a[@class='info-button']/..//div[.='More Info'] 第二,找到父元素并从中找到子元素 driver.findElement(By.cssSelector("#main >

这是我的Html:

有时我想和它自己联系,一旦我想获取它的文本,就像在它的More-Info子元素中一样

如何从原始选择器中获取子元素的选择器


我一般地问,因为这个案例对我来说重复了几次

如果我清楚地理解了你面临的问题,那么你可以做两件事

首先,编写一个疯狂的选择器来找到它

//a[@class='info-button']/..//div[.='More Info']
第二,找到父元素并从中找到子元素

driver.findElement(By.cssSelector("#main > div > div.footer > div > a")).findElement(By.path("//div[.='More Info']")).something

您可以使用以下xpath来定位“信息”按钮:

//div[@class='footer']//a[@class='info-button']

要检索文本“更多信息”,可以使用以下xpath:

//div[@class='footer']//div[.='More Info']

根据OP的评论进行编辑 使用innerHTML/text访问div元素的css选择器可以是:

#main > div > div.footer > div > a > div:nth-child(1)

它将第一个子元素“div”定位在相关的“a”元素下。

最终,它取决于应用程序的工作方式。下面假设您要查找的元素始终位于a元素的直接子元素中,并且它始终具有.btn_文本类。您可以像操作任何字符串一样操作选择器:

String parent_sel = "#main > div > div.footer > div > a";
String child_sel = parent_sel + " > div.btn_text";
这两个字符串都可以通过.cssSelector传递给。如果我的假设不正确,请根据需要进行调整。例如,如果div可以是的后代,而不一定是它的子级,则可以连接div.btn_文本以获得子级选择

我想取它的文本


如果您正在寻找一个可以为您提供文本的选择器,我会注意到,您没有可以传递给findElement以获取文本的选择器。当以复数形式使用时,此函数始终返回元素或元素列表。您必须在所获得的元素上使用getText。如果你想知道:XPath通常可以选择文本,但当你通过Selenium使用它时就不行了。

我问如何通过选择器从一个到它的子,而不是两个不同的选择器。请检查我编辑的代码在“根据OP的注释编辑”,看看它是否符合你的目的
#main > div > div.footer > div > a > div:nth-child(1)
String parent_sel = "#main > div > div.footer > div > a";
String child_sel = parent_sel + " > div.btn_text";