2017-03-05 43 views
-1

我真的很新的硒,這可能很簡單,但我想要做的是將該屬性內的'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

你能發佈一個鏈接到頁面嗎? – JeffC

+0

https://www.thecompleteuniversityguide.co.uk/newcastle/ – IslaLR

回答

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()之後的轉到定位器。

W3C CSS Selector Reference

Sauce Labs CSS Selector Tips


原來的答覆使用XPath

.getText()應該是元素上工作。看起來你在XPath中有一組額外的()。此外,您應該能夠使用等於而不是。可能有其他鏈接包含可能導致問題的部分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或唯一ID的唯一父級。

+0

我認爲我的定位器一定是錯的,因爲即使這樣它仍然沒有返回任何東西 – IslaLR

+0

你試過'$ x()'如我所建議的? – JeffC

+0

是的,它竟然是3,我現在看到,謝謝你的幫助! – IslaLR

0

試試這個:

public String findRanking(){ 
    WebElement e = driver.findElement(By.xpath("//a[contains(@href, '/league-tables/rankings')]"); 
    return e.getText(); 
} 
+0

我也試過這種方式,仍然輸出任何東西 – IslaLR

0

試試這種方法。

如果您想獲得2017 League Table Ranking: 25thtext,請使用下面的代碼。

String test = driver.findElement(By.xpath("//a[contains(text(), '2017 League Table Ranking: 25th')]")).getText(); 
System.out.println(test); 

如果你想獲得這個文本2017 League Table Ranking: 25thhref屬性,然後使用下面的代碼。

String href = driver.findElement(By.xpath("//a[contains(text(), '2017 League Table Ranking: 25th')]")).getAttribute("href"); 
System.out.println(href); 
+0

原來我的定位器錯了,JeffC的解決方案修復了它,謝謝! – IslaLR

+0

這不是關於定位器問題,你可以用不同的方法做同樣的事情。就像@Jeffc用'cssSelector'做的一樣,我正在用'xpath locator'做。從這兩個定位器你會得到你的結果。 –

+0

如果此答案對您有幫助,請將此答案標記爲「已接受」 –