2015-04-02 84 views
0

我有一個基於Web的應用程序,它爲在特定的新窗口中執行的每個操作啓動子窗口。例如:父窗口(parentButton) - > Child1窗口(child1Button) - > Child2窗口(child2Button)Selenium webdriver Java處理多於2個子窗口

我點擊父窗口中的Pbutton將啓動子窗口-1。我在Child窗口中單擊Cbutton1將啓動Child Window-2。我點擊Child window-2中的Cbutton2,它將啓動Child Window-3。因此,我認爲我已經啓動瀏覽器應用程序,我必須切換到Child Window-1,執行cbutton-1,切換到Child窗口-2,執行cbutton-2操作,切換到子窗口 - 3並在此窗口的文本區域中發送一些文本。

這裏的是我在Java代碼中,

/* driver launches and logs in to the Parent window */ 
    String winHandleConsole = driver.getWindowHandle(); 
    log.info("Title of Console window: " +driver.getTitle()); 
    driver.findElement(Constants.lnkIncidentManagement).click(); 
    Set<String> strHandles = driver.getWindowHandles(); 
    log.info("Size of window handle: "+strHandles.size()); 
    for(String handle: strHandles){ 
     driver.switchTo().window(handle); 
     String strTitle = driver.getTitle(); 
     if(strTitle.equalsIgnoreCase("Incident Management Console(Search)")){ 
       driver.manage().timeouts().implicitlyWait(TimeOutInSec, TimeUnit.SECONDS); 
       driver.findElement(Constants.lnkNewIncident).click(); 
       Set<String> strHandle_2 = driver.getWindowHandles(); 
       log.info("NEW WINDOW HANDLES: "+ strHandle_2.size()); 
       for(String handle_2: strHandle_2){ 
        log.info("-------:" + driver.getTitle()); 
        if(driver2.getTitle().equalsIgnoreCase("Incident (New)")){ 
         log.info("Title of Incident-New: "+ driver2.getTitle()); 
         driver.switchTo().window(handle_2); 
         driver.manage().timeouts().implicitlyWait(TimeOutInSec, TimeUnit.SECONDS); 
         driver.findElement(Constants.txtNewIncidentSummary).sendKeys("This is a text"); 

        } 
       } 
      }` 

我看到一個新的窗口標題爲「事件(新的)」,當我打印strHandle_2的大小,我看到3 prited。但是,當我打印handle_2變量時,我看不到標題打印。

我應該怎麼做從父母切換到孩子1和從孩子1切換到孩子2?

+0

您可以發佈您正在處理的html嗎? – LittlePanda 2015-04-02 03:01:32

+0

@LittlePanda,這個問題不需要html。我的原始帖子的最後一行清楚地提到了我的確切問題。而且,html太大而無法附加。 – ASANT 2015-04-02 05:09:43

+0

我發現了一個類似的問題 - http://stackoverflow.com/questions/18379410/how-to-handle-the-child-window-in-the-selenium-web-driver-testng-by-using-frame – LittlePanda 2015-04-02 05:22:38

回答

0

假設你已經在使用兩個窗口,現在你想單擊一個鏈接,它將打開第三個窗口,並且你想打開第三個窗口: 我已經寫了一個簡單的邏輯及其工作..... ........... 將WebElement傳遞到您要單擊的位置..............

public static void switchToWindow(WebElement ele) 
    { 
     try { 
      Set<String> OldAllWindows = GenericMethods.driver.getWindowHandles(); 
      ele.click(); 
      Set<String> NewAllWindows = GenericMethods.driver.getWindowHandles(); 
      for(String newWindow : NewAllWindows) 
      { 
       if(!OldAllWindows.contains(newWindow)) 
       { 
        GenericMethods.driver.switchTo().window(newWindow); 
       } 
      } 

      // 
     } catch (Exception e) { 
      System.out.println("Issue in Switching Window"+e.getMessage()); 
     } 

    } 
相關問題