0

Serenity は selenium に基づく BDD です。私は 3 つのウィンドウ ハンドラを使用しています。私の要件は次のようなものです-

  1. ウィンドウを開く 1

  2. ウィンドウ 2 を開くウィンドウ 1 の要素をクリックします。

3. ウィンドウ 3 を開くウィンドウ 2 の要素をクリックします。

  1. すべてのウィンドウを閉じる

すべてのウィンドウ ハンドラーは正常に入力を取得していますが、それでもウィンドウを切り替えることができません

4

2 に答える 2

0
//In first window - Do something to activate second window
//Actions ..... here

//Second window opens
//Following code handles second window
ArrayList<String> newTab = new ArrayList (getDriver().getWindowHandles());
getDriver().switchTo().window(newTab.get(1));

//In second window - do some actions here
ArrayList<String> newTabs = new ArrayList<String> getDriver().getWindowHandles());
getDriver().switchTo().window((newTabs.get(2)));

//In Third Window        
//Do some actions here

//Close Third Window
getDriver().close(); //Disable if the action in third window closes third window like Cancel/OK button
//Switch back to second window
getDriver().switchTo().window(newTab.get(1));
//Close Second Window
getDriver().close();
//ghet back to initial (First) window
getDriver().switchTo().window(newTab.get(0));
于 2016-07-25T05:26:27.290 に答える
0

これは、最大2つのウィンドウを処理するのに少しうまくいきましたが、3つではうまくいきませんでした -

public class MultipleWindowsHandle {


     WebDriver driver;  
     @Before  
     public void setup() throws Exception {  
     driver=new FirefoxDriver();  
     String URL="http://www.seleniummaster.com";   
     driver.get(URL);  
     driver.manage().window().maximize();  
     }  
     @Test  
     public void test() throws Exception {   
     // Opening site  
     driver.findElement(By.xpath("//img[@alt='SeleniumMasterLogo']")).click();  
     // Storing parent window reference into a String Variable  
     String Parent_Window = driver.getWindowHandle();    
      // Switching from parent window to child window   
     for (String Child_Window : driver.getWindowHandles())  
     {  
     driver.switchTo().window(Child_Window);  
     // Performing actions on child window  
     driver.findElement(By.id("dropdown_txt")).click();  
     List  dropdownitems=driver.findElements(By.xpath("//div[@id='DropDownitems']//div"));  
     int dropdownitems_Size=dropdownitems.size();  
     System.out.println("Dropdown item size is:"+dropdownitems_Size);  
     ((WebElement) dropdownitems.get(1)).click();  
     driver.findElement(By.xpath("//*[@id='anotherItemDiv']")).click();  
     }  
     //Switching back to Parent Window  
     driver.switchTo().window(Parent_Window);  
     //Performing some actions on Parent Window  
     driver.findElement(By.className("btn_style")).click();  
     }  
      @After  
      public void close() {  
      driver.quit();  
      }   
     }  
于 2016-02-04T03:46:57.087 に答える