2017-10-17 82 views
0

现在我已经更复杂了(至少对我而言)并且努力寻找元素(这是动态元素 - 每日变化)。以下是它在页面上的外观。顶部是 'UL'几个'li'里面的动态元素

<ul class="feed-tips" id="Grid" 

以下是50 '' 用同一个名字:

<li class="feed-item vevent tip-list-row" 

低于 '' 中的一个是

<div class="tip medium-9 small-12 column padding-reset dtstart tip-list-row__tip"> 
<a href="link to a page" class="summary url">Heading4</a> 

所以,链接到页面&标题4(在'href')是动态的,从明天起它将毫无用处。 以上是列表中的第5次“礼”,我试图找到CSS选择元素,但它不工作 - 这里是我的尝试:

//Open 5th from the list 
    driver.findElement(By.cssSelector("#Grid > li:nth-child(5) > div.tip.medium-9.small-12.column.padding-reset.dtstart.tip-list-row__tip > div.tip-match.medium-12.column > div.tip-teams > a")).click(); 

预先感谢您。

+0

尝试xpath也,这里是: driver.findElement(By.xpath(“// * [@ id =”Grid“]/li [3]/div [2]/div [2]/div [1]/a“)) – Zoran

+0

@Zoran原始帖子中的CSS与您添加的html源不匹配。在CSS中有2个额外的div在源文件中不存在。如果在50里为什么只有一个链接,那么为什么还要使用索引。只需使用“ul [id ='Grid']> li a [class ='summary url']”。 – Grasshopper

+0

@Grasshopper - 我在创建问题时必须犯一个错误 - Idea不会产生一个长问题。关于这些行cssselector和xpath,它们是直接从页面选取的。它们是正确的 - 只是xpath实际上是第三元素,而不是第五元素。 – Zoran

回答

1

如果你正在努力寻找动态的href锚元素,你可以使用稍微如下中的XPath:

// UL [@ ID = '网格'] /李// DIV [包含( @class,'tip-teams')] // a [@href]

我不明白总问题,但它会列出该层次结构中属性为href的所有链接。在这种情况下,请勿使用任何类型的索引。此外,不需要深入所有级别的层次结构。

// a [@href] - 它将为您提供与@href的所有链接,而无需比较任何值。

+0

谢谢 - 这正是我想找的 – Zoran