我正在编写一个selenium脚本来登录并创建新邮件,发送和注销。但是当我点击“新邮件”按钮时,它会打开一个新窗口。在selenium我怎么能处理这个。我是硒的新手。请详细解释。
答案 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中。
如何切换至正确/适当的窗口:
基本上有两种方法可以切换到适当的窗口。
要获取当前/父/默认窗口句柄:
String handle = driver.getWindowHandle();
driver.switchTo().window( handle );
OR
Set < String > windowHandles = driver.getWindowHandles();
for(String handle : windowHandles )
{
driver.swicthTo().window( handle );
}