使用xpath在WebDriver中选择元素
如何仅选择父span webelement而不选择子span webelement List summaryLinks=summary.findElements(By.xpath(“”) 我的HTML代码:使用xpath在WebDriver中选择元素,xpath,webdriver,Xpath,Webdriver,如何仅选择父span webelement而不选择子span webelement List summaryLinks=summary.findElements(By.xpath(“”) 我的HTML代码: <li> <div class="mod-indent mod-indent-2"> <a href="http://mysite.com"> <img class="activityicon" alt="URL" src="http://mysit
<li>
<div class="mod-indent mod-indent-2">
<a href="http://mysite.com">
<img class="activityicon" alt="URL" src="http://mysite.com">
<span class="instancename">LinkText <span class="accesshide "> URL</span></span>
</a>
</div>
</li>
我尝试了以下XPath,但没有成功.//div[@class='mod-indent-mod-indent-2']/a/span[@class='instancename'] .//div[@class='mod-indent mod-indent-2']/a/span[1] .//div[@class='mod-indent mod-indent-2']/a/span/ .//div[@class='mod-indent mod-indent-2']/a/span[position()=1]
.//div[@class='mod-indent mod-indent-2']/a/span/span[position()=1]有多种方式,但只有几种:
By.XPath("//div[contains(@class, 'mod-indent-2')]/descendant::span[@class='instancename']");
By.XPath("//span[@class='instancename']");
By.XPath("//span[@class='accesshide ']/..");
By.ClassName("instancename");
By.CssSelector("span.instancename");
By.XPath("//span[text()='Link Text']");
多种方式,但只有少数几种:
By.XPath("//div[contains(@class, 'mod-indent-2')]/descendant::span[@class='instancename']");
By.XPath("//span[@class='instancename']");
By.XPath("//span[@class='accesshide ']/..");
By.ClassName("instancename");
By.CssSelector("span.instancename");
By.XPath("//span[text()='Link Text']");
网络驱动程序代码:
List <WebElement> summaryLinks =
summary.findElements(By.cssSelector("span.instancename"));
List <String> links = new ArrayList <String> ();
for (int i=0; i<summaryLinks.size(); i++){
WebElement element =summaryLinks.get(i);
if (element.isDisplayed() && element.isEnabled()){
String str = element.getText();
links.add(str);}}
System.out.println(links);
现在,当我返回links.size()
时,它将返回正确的
元素(即仅包括父跨度)
我不确定这是否只是一个打印退货问题。我试过了
trim()
,toString()
,然后将getText()的返回添加到链接中
但其结果是相同的。网络驱动程序代码:
List <WebElement> summaryLinks =
summary.findElements(By.cssSelector("span.instancename"));
List <String> links = new ArrayList <String> ();
for (int i=0; i<summaryLinks.size(); i++){
WebElement element =summaryLinks.get(i);
if (element.isDisplayed() && element.isEnabled()){
String str = element.getText();
links.add(str);}}
System.out.println(links);
现在,当我返回links.size()
时,它将返回正确的
元素(即仅包括父跨度)
我不确定这是否只是一个打印退货问题。我试过了
trim()
,toString()
,然后将getText()的返回添加到链接中
但是结果是一样的。我一直在尝试从嵌套的span元素中获取链接文本,以便迭代并单击这些链接。但是,使用getText()将返回插入新行的两个跨度中的文本。我似乎不明白为什么通过CSS隐藏子元素时会打印奇怪的结果。我一直在尝试从嵌套的span元素获取链接文本,以便可以迭代并单击这些链接。但是,使用getText()将返回插入新行的两个跨度中的文本。我似乎不明白为什么通过CSS隐藏子元素时会打印奇怪的结果。使用“\n”找到新行的索引并返回不包括该子字符串的子字符串,它工作正常使用“\n”找到新行的索引并返回不包括该子字符串的子字符串,工作正常