2014-09-26 4 views
0

webelement의 링크 위치를 얻을 수있는 방법이 있습니까? 우리가 webelement에서 텍스트를 얻을 수 있고 또한 getAttribute ("href") 메소드를 사용하여 href 링크 용 링크의 위치를 ​​알 수 있습니다. 하지만 제 요구 사항은 모든 링크를 얻는 것입니다. 예를 들어, 셀렌을 사용하여 웹 페이지에서 링크를 얻는 방법

1.< a href="http://www.java2s.com/">Example</a> 
2. < a onclick="Test.TestFunction("9","testNumber","2");" style="cursor:pointer">This is text display on page</a>. 

내가 주어진 코드 아래에 사용자가 :

public void getAlllink(){ 
    tcount = driver.findElements(By.tagName("a")); 
    System.out.println("Total Links on page :"+tcount.size()); 
    for(WebElement we:tcount){ 
    System.out.println("Link: "+str);//display element but not link. 
    we.click(); //This click on link 
    System.out.println(we.getText()); //display text code that fetched by selenium and not link text 
    System.out.println(we.getAttribute("href"));//display only one link http://www.java2s.com/ 
} 

두 요소에 대한 링크 위치를 얻을 방법이 있나요. 하나는 단순 링크이고 다른 하나는 JavaScript 함수 호출시 생성되는 링크입니다.

+0

'str' 변수 란 무엇입니까? 내가 볼 수있는 한 그것을 사용하려고 시도하기 전에 선언하지 않습니다. 링크를 클릭하면 브라우저의 내용이 바뀔 가능성이 있으므로,'.getText()'및 '.getAttribute()'메소드는 그 정보를 얻은 후에 클릭하지 않으면 실패 할 것입니다. –

+0

답장을 보내 주셔서 감사합니다. 예, 클릭 기능이 호출되어 브라우저에 대한 내용이 변경되어 스크립트가 실패 할 때 맞습니다. str은 문자열 변수입니다. str = we.toString(); 하지만 셀렌에 의해 가져 오는 텍스트 코드를 표시합니다 –

답변

0
public class Java2sAllLinksCapture { 

public static void main(String[] args) { 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.java2s.com/"); 
    List<WebElement> links = driver.findElements(By.tagName("a")); 
    System.out.println(links.size()); 
    for(int i=0;i<links.size();i++){ 
     //print the link text 
     System.out.println(links.get(i).getText()); 
     //Print the href's 
     System.out.println(links.get(i).getAttribute("href")); 
    } 
    } 
    } 
+0

위의 코드에 만족하면 pls는 "이 대답은 유용합니다"라는 위 화살표를 선택합니다 – DSL

+0

Sorry.Why이 답변에 -1을 얻는 이유는 무엇입니까? – DSL

+0

안녕하세요 카림 Narsindani, 내가 처음으로 부모 브라우저를 열고 href 링크를 누른 다음 부모 페이지에서 하나씩 하위 링크를 클릭 한 다음 새 페이지를 열려면 자식 페이지를 의미 이동하는 것이 좋습니다 빠른 질문이 부모 페이지로 돌아가서 다음 링크를 클릭 한 다음 자식 페이지를 엽니 다. URL과 제목을 얻은 다음 부모 페이지로 돌아갑니다. 나는 모든 부모와 자식 hrefs를 얻으려고 노력한다고 생각해. 이것이 당신의 질문이라면? 그렇다면이 질문에 대한 답변을 얻었습니다. – DSL

0

대상으로 사용될 링크를 차례로 반환하는 javascript 기능을 실행하려면 링크를 클릭해야합니다. 링크를 클릭하면 대상 페이지로 이동하므로 이전 webElements를 사용할 수 없으므로 링크를 검색 할 수 없습니다. 링크를 클릭하지 않고 javascript 함수는 링크를 실행하고 생성하지 않습니다.

+0

귀하의 소중한 의견에 감사드립니다. 이 질문 뒤에 이유는, 회사 웹 응용 프로그램에 셀레늄을 사용하여 링크 유효성을 검사하는 도구를 개발하고 있습니다. 그러나 href 링크 'www.test.test/test1'과 연결된 링크를 확인할 수 있지만 href "#"및 javascript 기능과 같은 링크가 있습니다. 사용자가 버튼 시스템을 클릭하면 링크가 생성됩니다. 기존 페이지를 잃어 버리지 않고 그러한 링크를 생성 할 수있는 방법이 있습니까? 아니면 우리가 필요한 자바 스크립트를 실행할 수있는 셀레늄을 사용하여 생각보다 자바 스크립트 함수 이름을 얻을 수 있습니다. –

관련 문제