2017-03-05 6 views
-1

私は本当にセレンの新作ですが、これはおそらく本当にシンプルですが、この属性内の '2017リーグテーブルランキング:25th'のテキストを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()の後ろにあなたのgotoロケータでなければなりません。 XPathの

.getText()

W3C CSS Selector Reference

Sauce Labs CSS Selector Tips


オリジナルの答えは、その要素で動作するはずです。 XPathに余分な()のセットがあるようです。また、の代わりにequalsを使用できるようにする必要があります。問題の原因となっている可能性のある部分的な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または固有のものを持つ一意の親を探します。

+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

この方法をお試しください。

text2017 League Table Ranking: 25thにしたい場合は、以下のコードを使用してください。このテキスト2017 League Table Ranking: 25thhref属性を取得したい場合は

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

、コードの下に使用します。

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

この回答があなたに「役に立った」場合、この回答に「承諾済み」とマークしてください –

関連する問題