2014-06-09 1 views
0

http://www.timesjobs.com/에 로그인하고 싶습니다. 로그인시 팝업이 표시됩니다 (css 라이트 박스). 이 로그인 상자에서 사용자 이름에 대한 정확한 xpath를 찾을 수 없습니다. 나는 각 프레임마다 반복했고 사용자 이름 텍스트 박스에 대해 xpath를 생성 한 firefox를 사용하려고 시도했다. 프레임에서 사용자 이름 텍스트 상자의 xpath를 웹 드라이브로 찾는 방법

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"xpath","selector":"//html/body//input[@name='j_username']"}. 

코드하지만 행운 아래 시도 :

public static void main(String[] args) throws InterruptedException { 
    // TODO Auto-generated method stub 
    WebDriver driver = new FirefoxDriver(); 
    driver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS); 
    driver.get("http://www.timesjobs.com"); 
    driver.findElement(By.linkText("Sign In")).click(); 
Thread.sleep(10000L); 
    List<WebElement> frames = driver.findElements(By.tagName("iframe")); 
    System.out.println("Total Frames: " + frames.size()); 
    int k =0; 
    while(k<=frames.size()){ 

     try{driver.switchTo().defaultContent(); 
      driver.switchTo().frame(k); 
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
      WebElement we1 = driver.findElement(By.xpath("//html/body//input[@name='j_username']")); 
      we1.sendKeys("[email protected]"); 
     System.out.println("in try BLOCK:"+k); 
     }catch(Exception e){ 
      e.printStackTrace(); 
      System.out.println("in catch: "+k); 
     }finally{ 
      k++;} 
    } 
    System.out.println("end of the program"); 
} 
+0

'input [@ name = 'j_username']'이 iframe에 있는지 확인하고 싶습니까? – olyv

+0

@olyv, 예 ... 어쨌든 고마워요. 아래 답변을 얻었습니다. 입력 상자에 도달 할 프레임이 2 개 있습니다. – Pratik1990

답변

0

다음 코드를 사용해보십시오 나는 예외를 얻었다. 그것은 작동합니다.

사용자 이름 필드는 GB_Frame1에 포함 된 GB_Frame 내에 있습니다. 따라서 GB_Frame1로 전환 한 다음 GB_Frame으로 전환해야합니다. 사용자 이름 필드는 name이므로 xpath 이상으로 사용하는 것이 좋습니다.

public static void main(String[] args) throws InterruptedException { 
    WebDriver driver = new FirefoxDriver(); 
    driver.get("http://www.timesjobs.com"); 
    driver.findElement(By.linkText("Sign In")).click(); 
    Thread.sleep(10000); 
    driver.switchTo().frame("GB_frame1"); 
    driver.switchTo().frame("GB_frame"); 

    WebElement we1 = driver.findElement(By.name("j_username")); 
    we1.sendKeys("[email protected]"); 
} 

프레임 식별의 어려움을 이해하지 못합니다. 페이지 소스에서 꽤 분명했습니다. 이게 도움이되는지 알려주세요.

+0

답변 해 주셔서 감사합니다. Firebug 또는 페이지 소스가있는 프레임을 찾을 수 없습니다. 파이어 폭스에서 ** 검사했을 때 점수를 얻을 수 있습니다. 이러한 문제를 피하기 위해 페이지 소스를 찾는 더 좋은 방법을 제안 해 주시겠습니까? – Pratik1990

+0

크롬을 사용해보세요. xpath 캡처 및 테스트에 도움이되는 내장 된 개발자 도구가 있습니다. 원하는 경우 특정 프레임으로 포커스를 변경할 수 있습니다. – Sighil

관련 문제