在selenium中选择Window而不使用title

时间:2014-02-12 05:29:57

标签: testing selenium selenium-webdriver automated-tests selenium-rc

对于我的webapp,我需要打开gmail帐户并从邮件中随机生成一个字符串密码并将其复制到我的门户网站上。 问题是我使用gmail帐户登录我的webapp。因此,当我在另一个窗口打开gmail时,它的会话已经启动并且直接打开收件箱页面,我无法将焦点转移到此页面,因为它的标题是动态的,如“Inbox(38) - demo@miniorange.co.in - MiniOrange Mail“取决于待处理的消息。

我需要一种方法来选择我的窗口而不使用它的标题。

2 个答案:

答案 0 :(得分:4)

这已经多次讨论过了;除非您为电子邮件公司工作,否则不要尝试自动化Gmail或任何其他Web浏览器!

如果您需要检查已发送的电子邮件,验证内容或提取数据以继续发送电子邮件,那么使用电子邮件API本质上是不稳定的并且要好得多。

https://groups.google.com/forum/m/#!msg/selenium-users/8jR6Fw5ndxU/7peVDuzkNN4J

答案 1 :(得分:2)

此解决方案适用于任意数量的popus

String parentWindow = driver.getWindowHandle();
Set<String> windowHandles = driver.getWindowHandles();
Iterator<String> iterator = windowHandles.iterator();
while (iterator.hasNext()) {
    String handle = iterator.next();
    if (!handle.contains(parentWindow)) {
        // Switch to popup 
        driver.switchTo().window(handle);
        // Do something          
    }
}
// Switch back to parentWindow
driver.switchTo().window(parentWindow);