2014-06-09 20 views
0

我想登錄到http://www.timesjobs.com/。登錄後彈出出現(這是CSS的燈箱)。在此登錄框中找不到用戶名的確切xpath。我遍歷每一幀,並試圖使用Firefox生成的xpath用戶名文本框。我得到的例外是:在框架中,如何使用webdriver查找用戶名文本框的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

感謝您的回答。我找不到與螢火蟲或頁面源的幀。當我**在Firefox中檢查**時能夠明白你的觀點。你能否提出任何更好的方法來尋找pagesource以避免這些問題? – Pratik1990

+0

嘗試使用chrome。它有一個內置的開發工具,可以幫助捕獲xpath並對它們進行測試。如果需要,您可以將焦點更改爲特定的框架。 – Sighil

相關問題