在Selenium中如何处理新窗口?

时间:2017-08-03 06:13:28

标签: selenium-webdriver

我正在编写一个selenium脚本来登录并创建新邮件,发送和注销。但是当我点击“新邮件”按钮时,它会打开一个新窗口。在selenium我怎么能处理这个。我是硒的新手。请详细解释。

4 个答案:

答案 0 :(得分:2)

http://toolsqa.com/selenium-webdriver/switch-commands/

Selenium WebDriver切换窗口命令您可以在此处找到它...

答案 1 :(得分:1)

使用下面的代码,你必须使用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");
        }
    }

答案 2 :(得分: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();
        }

答案 3 :(得分:0)

如何获取窗口句柄:
          字符串句柄= driver.getWindowHandle();
如果在单击任何链接,按钮等时打开多个窗口,则将获得每个窗口的“窗口句柄”-
          设置windowHandles = driver.getWindowHandles();

“ getWindowHandles()” :方法返回窗口句柄(每个打开的窗口的唯一ID),以便设置返回类型。因为set将不包含重复的元素,所以getWindowHandles在这里为每个winodw返回唯一的id /窗口句柄,并存储在Set中。

如何切换至正确/适当的窗口:
     基本上有两种方法可以切换到适当的窗口。

  1. 通过使用windowName      driver.switchTo()。window(“ windowName”);
         OR
  2. 要获取当前/父/默认窗口句柄:

    String handle = driver.getWindowHandle();
    driver.switchTo().window( handle  );
    OR
    Set < String > windowHandles = driver.getWindowHandles();
    
    for(String handle : windowHandles )
     {
         driver.swicthTo().window( handle ); 
    }
    

Example of Handling Multiple Windows In Selenium