在上篇文章里,提到了一个切换句柄的功能,切换句柄实际上就是切换网页的窗口。为什么需要切换句柄呢?因为计算机与真实的用户不一样,用户可以打开新的窗口之后,就可以直接在新的页面进行操作,而计算机在打开一个新的页面之后,它所操作的句柄并不会自动的跳转到新的页面之中,而是在原先的句柄中进行操作。简单来说,计算机就只是完成打开一个新页面的过程,影响到的是原来的页面,与新的页面没有关系。
那么要怎样切换到新的页面呢?在webdriver中提供了一个switch.to.window(handle)的方法。接下来利用一个利用百度搜索bilibili并跳转到b站页面进行操作的例子来介绍一下该方法的用法。关键代码如下:
//运用部分文本找到b站官网
driver.findElement(By.partialLinkText("干杯")).click();
// 获取当前页面句柄
String handle = driver.getWindowHandle();
// 获取所有页面的句柄,并循环判断不是当前的句柄
for (String temhandle : driver.getWindowHandles()) {
if (!temhandle.equals(handle))
driver.close();//切换到新页面之后关闭当前页面
driver.switchTo().window(temhandle);
}
Thread.sleep(2000);
//检测句柄是否切换到了当前页面
driver.findElement(By.cssSelector("li.nav-item:nth-child(3) > a:nth-child(1)")).click();
通过这样一个for循环,我们就可以跳转到新的页面上进行操作了。
介绍完切换句柄之后,再来介绍一下有关模拟鼠标的操作。鼠标事件主要有一下五种:
1、左击
Actions action = new Actions(driver);
action.click(WebElement).perform();
2、双击
action.doubleClick(WebElement).perform();
3、拖动
action.dragAndDrop(WebElement begin,WebElement end).perform();
4、悬停
action.moveToElement(WebElement).perform();
5、右击
action.contextClick(WebElement).perform();