2015-04-02 40 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()); 
     } 

    } 
相关问题