selenium学习笔记——高级操作
这篇主要介绍一下页面的高级操作:页面跳转、单选下拉框选择、frame切换、鼠标悬停、非网页弹窗
一、页面跳转/窗口跳转
两种方式:不关闭原窗口和关闭原窗口,建议采用第二种关闭原窗口这种方式
不关闭原窗口:
1 //获取当前窗口的句柄 2 String orighandle = driver.getWindowHandle(); 3 //遍历所有句柄 4 for(String handle : driver.getWindowHandles()){ 5 // 如果不是原窗口的句柄,那么就把句柄移动到新窗口 6 if(!handle.equals(orighandle)){ 7 driver.switchTo().window(handle); 8 break; 9 } 10 }
关闭原窗口:
1 // 获取原窗口句柄 2 String orighandle = driver.getWindowHandle(); 3 //增强for循环,遍历所有句柄 4 for (String handle : driver.getWindowHandles()) { 5 if (handle.equals(orighandle)) { 6 //如果是原窗口,那就关闭 7 driver.close(); 8 } 9 else { 10 //如果是新窗口,就移动鼠标到新窗口 11 driver.switchTo().window(handle); 12 } 13 }
二、鼠标悬停:鼠标放上去,下级菜单显示,又发生点击事件
1 //创建对象 2 Actions actions = new Actions(driver); 3 //鼠标移动至元素上 4 actions.moveToElement(driver.findElement(By.linkText("数码产品").perform(); 5 //按下某个元素链接,不释放鼠标 6 actions.clickAndHold(driver.findElement(By.linkText("相机").perform(); 7 //释放鼠标左键,让页面刷新 8 actions.release(driver.findElement(By.linkText("相机").perform();
三、非网页弹窗:Alert弹窗
1 //点击弹窗的确定按钮 2 driver.switchTo().alert().accept(); 3 //点击弹窗的取消按钮 4 driver.switchTo().alert().dismiss(); 5 //弹窗中的输入框输入文本 6 driver.switchTo().alert().sendKeys("文本内容");
四、frame切换
注意:frame之间相互切换时,要从一个frame切换到主界面后,再切换到另一个frame
1 //切换到frame 2 driver.switchTo().frame("frame的id"); 3 //切回到默认主界面 4 driver.switchTo().defaultContent();