如何仅选择父跨度webelement而不选择孩子?
列出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://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]
答案 0 :(得分:5)
多种方式,但只有几种:
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']");
答案 1 :(得分:0)
WebDriver代码:
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);
产生以下输出:
[Announcements
Forum, Student Lounge
Forum, Welcome
Page, Instructor Bio
URL, Course Schedule
Page]
现在,当我返回links.size()
时,它会返回正确的数字
元素(即仅包括父跨度)。
我不确定这是否仅仅是打印返回问题。我试过了
在将trim()
的返回值添加到链接之前toString()
,getText()
但结果是一样的。