迁移资料:selenium打开新窗口并截屏
2019-08-19 本文已影响0人
天雨流芳hodo
在使用selenium进行官网注册登录的过程中,需要切换到新窗口打开邮箱获取验证码,网上查找的资料大多是在当前页面点击按钮或者链接时,浏览器自动打开新的窗口,在此情况下,selenium必须切换到新的窗口下的作用域,才能继续对新的窗口内的元素进行操作。但在注册时,没有链接支持打开登录邮箱链接,这就需要强制打开一个新页签,可直接调用javascript脚本的方式,执行window.open()方法在一个新窗口打开这个登录邮箱链接。
JavascriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript(“window.open(‘https://exmail.qq.com/login‘)”);
打开邮箱页面后,再切换到新的窗口下的作用域
String currentWindow = driver.getWindowHandle();//获取当前窗口句柄
Set handles = driver.getWindowHandles();//获取所有窗口句柄
Iterator it = handles.iterator();
while (it.hasNext()) {
if (currentWindow == it.next()) {
continue;
}
WebDriver window = driver.switchTo().window(it.next());//切换到新窗口
}
对该页面操作时,还可以将获取到的验证码保留图像,以便后期排查问题或者验证结果时使用,这个时候截屏就显得尤为重要。
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(screenshot,new File(“D:\screenshots\screenshots1.jpg”));
这样就将页面保存到了D:\screenshots下,命名为screenshots1.jpg了。
对当前页面执行操作获取到激活码后,需要返回到注册页面输入激活码,可调用
driver.switchTo().window(currentWindow);回到原来页面,这样就完成自动注册流程了。