2017-03-05 2 views
-1

저는 셀렌에 정말 익숙하며 아마도이 코드는 매우 간단 할 것입니다.하지만이 속성 내에 '2017 리그 테이블 순위 : 25 번째'텍스트를 자바 :.셀렌을 사용하여 속성 텍스트에 액세스

<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 locator가 있어야합니다.

.getText() XPath를

Sauce Labs CSS Selector Tips


원래 대답

W3C CSS Selector Reference

는 해당 요소에 작동합니다. XPath에 여분의() 세트가있는 것 같습니다. 또한 대신 equals를 사용할 수 있어야합니다. 문제를 일으킬 수있는 부분 href가 포함 된 다른 링크가있을 수 있습니다. 나는 아래에서 그것을 시도 할 것이다. return을 추가하고 반환 유형을 String으로 변경했습니다.

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

크롬에서 XPath를 테스트 할 수 있습니다. 페이지를 열고 개발자 콘솔에서 $x("//a[@href='/league-tables/rankings']").length을 시도하고 1을 반환하는지 확인하십시오. 0이면 로케이터에 문제가있는 것입니다. 그것이 > 1 인 경우 locator의 초점을 더욱 좁혀 야합니다. 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

이 대답이 '도움이된다'면이 대답을 '수락 됨'으로 표시하십시오. –

관련 문제