Selenium 自动化 |
您所在的位置:网站首页 › switch打开浏览器方法 › Selenium 自动化 |
更多内容请关注我的 Selenium 自动化 专栏: 入门和 Hello World 实例使用WebDriverManager自动下载驱动Selenium IDE录制、回放、导出Java源码浏览器窗口操作平时我们在使用浏览器时,通常会打开多个窗口,然后再多个窗口中来回切换,这用鼠标点击或用键盘快捷键是很容易实现的。 但如果我们用 Selenium 自动化时呢? 回答是当然也可以。 1. 默认打开一个窗口只要我们稍微留意就会发现,多次调用 get() 其实都是打开的同一个窗口,包括 back() 和 forward() 都是在同一个窗口中。 driver.get("https://www.w3ccoo.com/html/html_forms.html"); Thread.sleep(3000); driver.get("https://www.baidu.com"); Thread.sleep(3000);可以看到,两个网页是在同一个窗口中打开的。 2. 打开一个新窗口那么我们怎么打开一个新窗口呢? 遗憾的时,Selenium WebDriver 并没有直接提供一个类似 newGet() 这样的方法打开新窗口。所以我们只能另辟蹊径。 这就是使用JS。对的,Selenium 也可以执行JavaScript! driver.get("https://www.w3ccoo.com/html/html_forms.html"); Thread.sleep(3000); ((JavascriptExecutor) driver).executeScript("window.open();"); Thread.sleep(3000);这样,就通过JS打开了一个新窗口。 接下来,我们继续,想办法在新打开的窗口中打开一个网页。 也许你会觉得很容易,这不是新打开一个窗口吗?直接调用 get() 方法不就行了? 时间是检验真理的唯一标准。 driver.get("https://www.w3ccoo.com/html/html_forms.html"); Thread.sleep(2000); ((JavascriptExecutor) driver).executeScript("window.open();"); Thread.sleep(2000); driver.get("https://www.baidu.com"); Thread.sleep(2000);很不幸,新的网页是在原来的窗口打开的。 有没有办法直接在新窗口打开网页呢?可以直接在open 方法中传参。 ((JavascriptExecutor) driver).executeScript("window.open('https://www.baidu.com');"); 4. 句柄在介绍如何切换窗口前,我们先介绍句柄。 句柄就是浏览器窗口的唯一ID,就像它的身份证。 driver.get("https://www.w3ccoo.com/html/html_forms.html"); System.out.println(driver.getWindowHandle());打印的是一串字符串:B761F78733881BCFA236385A487E3EBF 通过这个句柄,我们就能区别浏览器窗口!就可以来回切换。 5. 切换浏览器窗口下面的代码,做的事情很简单: 找到当前窗口的句柄打开一个新窗口拿到所有窗口的句柄出去步骤1中的窗口,剩下的就是新打开的窗口的句柄通过 switchTo() 和句柄,切换浏览器窗口 // 保存当前窗口句柄 driver.get("https://www.w3ccoo.com/html/html_forms.html"); log.info("当前URL:{}", driver.getCurrentUrl()); String originalWindowHandle = driver.getWindowHandle(); log.info("当前句柄:{}", originalWindowHandle); // 执行JavaScript来打开一个新窗口 ((JavascriptExecutor) driver).executeScript("window.open('https://www.baidu.com');"); // 获取所有窗口的句柄列表 Set windowHandles = driver.getWindowHandles(); // 找到新窗口的句柄 String newWindowHandle = null; for (String handle : windowHandles) { if (!handle.equals(originalWindowHandle)) { newWindowHandle = handle; break; } } log.info("新句柄:{}", newWindowHandle); log.info("-------切换后"); driver.switchTo().window(newWindowHandle); log.info("当前URL:{}", driver.getCurrentUrl()); log.info("当前句柄:{}", driver.getWindowHandle());到这里,我们已经可以用 Selenium 自由切换浏览器窗口了。关注CSDN - 兰亭序咖啡,和我一起学习探讨 Selenium 自动化和其它技术。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |