2017-08-03 12 views
1

ログインして新しいメールを作成し、送信してログアウトするためのセレンスクリプトを作成しています。しかし、[新規メール]ボタンをクリックすると、新しいウィンドウが開きます。セレンで私はこれをどのように扱うことができます。私はセレンを初めて使っています。詳しく説明してください。あなたがここでそれを見つけることができるウィンドウ・コマンドスイッチwebdriverをセレンではどのように新しいウィンドウを扱う?

+3

の可能性のある重複した[セレンwebdriverを中mutlipleの窓を処理する方法は、第三のウィンドウに2つ目から切り替える必要がある](https://stackoverflow.com/questions/45455402/how-to-handle-mutliple-windows -in-selenium-webdriver-need-to-second-second) – DebanjanB

答えて

0

以下のコードを使用して、あなたはgetWindowHandles-を使用する必要があり、私はそれはあなたが動けなくなる場合には、私に教えてください、役に立てば幸い他の場所 -

@Test 
     public void multipleWindows() { 
      driver.get(URL+"/windows"); 
      driver.findElement(By.cssSelector(".example a")).click(); 
      Object[] allWindows = driver.getWindowHandles().toArray(); 
      driver.switchTo().window(allWindows[0].toString()); 
      Assert.assertNotEquals(driver.getTitle(), "New Window"); 
      driver.switchTo().window(allWindows[1].toString()); 
      Assert.assertEquals(driver.getTitle(), "New Window"); 
     } 
    } 
0

このコードを試してみると、わかりやすくなります。

WebDriver driver = new FirefoxDriver(); 
driver.get("http://demo.guru99.com/popup.php"); 

driver.findElement(By.xpath("html/body/p/a")).click(); 

// return the parent window name as a String 
String parentWindow=driver.getWindowHandle(); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 


// Pass a window handle to the other window 
for(String childWindow: driver.getWindowHandles()) 
    { 
     System.out.println("Switch to child window"); 

     //switch to child window 
     driver.switchTo().window(childWindow); 

     //find an element and print text of it 
    WebElement textLabel=driver.findElement(By.xpath("html/body/div[1]/h2")); 
    System.out.println(" text: "+textLabel.getText()); 
    driver.close(); 
      } 
    System.out.println("Get back to parent window"); 

     //switch to Parent window 
     driver.switchTo().window(parentWindow); 

    //find an element and print text of it 
    WebElement logotext=driver.findElement(By.xpath("html/body/div[1]/h2")); 
     System.out.println("text: "+logotext.getText()); 
     driver.close(); 
     } 
関連する問題