0

如何仅选择父跨度 web 元素而不选择子元素?

列出 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]

4

2 回答 2

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']");
于 2012-05-29T22:20:42.577 回答
0

网络驱动程序代码:

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()到链接之前,但它的结果是一样的。

于 2012-05-31T03:38:02.110 回答