我对硒真的很陌生,这可能很简单,但我想要做的就是存储2017年联赛排名:第25位"此属性中的文本为java中的字符串:
<a href="/league-tables/rankings">
2017 League Table Ranking: 25th
</a>
public void findRanking() throws Exception {
String ranking = driver.findElement(By.xpath("(//a[contains(@href, '/league-tables/rankings')])")).getAttribute(href) ;
}
这为我提供了该属性正在使用的href的链接,并且是我最接近输出类型的权利。我试过简单地使用.getText()方法获取上面元素的文本,但是什么都不返回,我哪里出错?
答案 0 :(得分:0)
试试这个:
public String findRanking(){
WebElement e = driver.findElement(By.xpath("//a[contains(@href, '/league-tables/rankings')]");
return e.getText();
}
答案 1 :(得分:0)
由于我们现在有一个指向该页面的链接,因此我能够创建一个唯一的定位器。问题是有多个元素与定位器匹配,第一个匹配不是你想要的。由于我们在这里不需要XPath,所以我切换到CSS选择器。 CSS选择器有更好的浏览器支持,更快,我认为更容易创建。这应该现在有效。
public String findRanking() {
return driver.findElement(By.cssSelector("p.league-table-latest-rank > a[href='/league-tables/rankings']")).getText();
}
以下是CSS选择器的一些参考。我建议你花点时间学习它们。它们非常强大,应该是By.id()
之后的goto定位器。
XPath的原始答案
.getText()
应该对该元素起作用。看起来你的XPath中有一组额外的()。此外,您应该能够使用equals而不是contains()
。可能有其他链接包含可能导致问题的部分href。我会尝试以下。我添加了return
并将返回类型更改为String
。
public String findRanking() {
return driver.findElement(By.xpath("//a[@href='/league-tables/rankings']")).getText();
}
您可以在Chrome中测试XPath。打开页面并在开发控制台中尝试$x("//a[@href='/league-tables/rankings']").length
,并确保它返回1
。如果它是0
那么定位器出了问题。如果它是> 1
那么你将不得不进一步缩小定位器的焦点。找到具有ID或独特内容的唯一父级。
答案 2 :(得分:0)
试试这种方式。
如果您想获得text
的{{1}},请使用以下代码。
2017 League Table Ranking: 25th
如果您想获得此文String test = driver.findElement(By.xpath("//a[contains(text(), '2017 League Table Ranking: 25th')]")).getText();
System.out.println(test);
的{{1}}属性,请使用以下代码。
href