Selenium之特殊窗口切换--iframe,弹窗,对话框
来源:互联网 发布:ubuntu开机grub命令行 编辑:程序博客网 时间:2024/06/04 00:53
窗口分类:
1.iframe2.弹窗3.对话框
常见方法:
1.switchTo()2.getWindowHandles()
iframe举例:
慕课网路径:登录后主页头像-我的课程-wiki-创建词条如下图就是一个iframe窗口
任务:在iframe窗口下输入一段文字:
代码:
package com.wushuai.test;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;public class WindowTest { public WebDriver driver; //初始化chrome浏览器驱动 public void initDriver() { System.setProperty("webdriver.chrome.driver", "D:\\java\\chromedriver-32\\chromedriver.exe"); //初始化chrome浏览器 driver=new ChromeDriver(); driver.get("http://www.imooc.com/user/newlogin/from_url/"); //屏幕最大化 driver.manage().window().maximize(); } /* * 输入用户名与密码并且登录 * * */ public void inputBox() {// //输入账号// driver.findElement(By.name("email")).sendKeys("123456@qq.com");// try {// //睡眠两秒// Thread.sleep(2000);// } catch (InterruptedException e) {// // TODO Auto-generated catch block// e.printStackTrace();// }// //清除账号// driver.findElement(By.name("email")).clear();// String s=driver.findElement(By.name("email")).getAttribute("placeholder");// //打印信息// System.out.println(s);// /*// * // * 输入用户名与密码并点击登录// * // * 这里主要是为了在个人设置操作打下铺垫// * */ driver.findElement(By.name("email")).sendKeys("m13031155057@163.com"); driver.findElement(By.name("password")).sendKeys("123456"); driver.findElement(By.className("btn-red")).click();; try { //睡眠两秒 Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /* * 切换窗口方法 * */ public void iframeTest() { //进入iframe窗口页面 driver.get("http://www.imooc.com/wiki/create"); //必须找到我们iframe的id WebElement iframe=driver.findElement(By.id("ueditor_0")); //找到后切换到这个页面 driver.switchTo().frame(iframe); //切换到这个页面后,找到这个页面中的Tag标签并在其内输入"Hello World",注意由于里面只有一个body且body内元素标签 //很少,所以最好定位到标签内 driver.findElement(By.tagName("body")).sendKeys("Hello World!"); } public static void main(String[] args) { // TODO Auto-generated method stub WindowTest wt=new WindowTest(); wt.initDriver(); wt.inputBox(); wt.iframeTest(); }}
切换窗口
代码:
ackage com.wushuai.test;import java.util.List;import java.util.Set;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.chrome.ChromeDriver;import org.openqa.selenium.interactions.Actions;public class WindowTest2 { public WebDriver driver; public String wH; //初始化chrome浏览器驱动,并且让chrome浏览器打开慕课网首页 public void initDriver() { System.setProperty("webdriver.chrome.driver", "D:\\java\\chromedriver-32\\chromedriver.exe"); //初始化chrome浏览器 driver=new ChromeDriver(); driver.get("http://www.imooc.com/"); //屏幕最大化 driver.manage().window().maximize(); } /* * 使用Action执行鼠标左击,右击,双击,悬停操作 * * */ public void actionTest() { //找到我们慕课网首页包含前段开发,后端开发,移动开发等着一系列条目的className WebElement login=driver.findElement(By.className("menuContent")); //List集合接收前段开发,后端开发,移动开发的条目,注意用的是findElements不是findElement,多一个"s" List<WebElement> elements=login.findElements(By.className("item")); //创建动作对象,并且指定操作的浏览器 Actions actions=new Actions(driver); //单击操作传入参数,并且使用perform()提交,生效 //actions.click(login).perform(); //双击操作 //actions.doubleClick(login).perform(); //右击操作 //actions.contextClick(login).perform(); //actions.moveToElement().perform(); //鼠标悬停在List集合的第一个元素即"前段开发" actions.moveToElement(elements.get(0)).perform(); //得到当前的窗口 wH=driver.getWindowHandle(); //点击"前段开发"中包含的"HTML/CSS"条目 driver.findElement(By.partialLinkText("HTML/CSS")).click(); } /* * 窗口 * */ public void windowHandle() { //采用如下方法,会报错:no such element: Unable to locate element: {"method":"tag name","selector":"案例"} //主要还是父子元素出错 //driver.findElement(By.tagName("案例")).click(); //那么我们采用如下代码还是不会通过,原因主要是我们这里操作的是窗口值String类型,而不是之前类似的条目元素值// WebElement window=driver.findElement(By.className("bd"));// List<WebElement> tt=window.findElements(By.tagName("li"));// driver.switchTo().window(tt.get(2)); /* * 以下代码才是正确的 * */ Set<String> handles=driver.getWindowHandles(); for(String s:handles) { if(s.equals(wH)) { continue; } System.out.println(s); driver.switchTo().window(s); } driver.findElement(By.linkText("案例")).click(); } public static void main(String[] args) { WindowTest2 wt2=new WindowTest2(); wt2.initDriver(); wt2.actionTest(); wt2.windowHandle(); }}
总结:
1.注意窗口的iframe,弹出框等应用2.注意窗口类元素集合Set<>与常见集合List<>的区别与应用
阅读全文
0 0
- Selenium之特殊窗口切换--iframe,弹窗,对话框
- selenium之 定位以及切换frame(iframe)
- selenium之 定位以及切换frame(iframe)
- selenium之 定位以及切换frame(iframe)
- selenium之 定位以及切换frame(iframe)
- Python+Selenium练习篇之28-处理iframe切换
- selenium之 定位以及切换frame(iframe)
- selenium之 定位以及切换frame(iframe)
- Selenium Webdriver窗口切换
- selenium多窗口切换
- selenium 切换窗口
- selenium python iframe的切换
- Python+Selenium练习篇之27-多窗口之间切换
- selenium窗口切换,获取句柄
- selenium多个窗口切换
- 6.selenium 浏览器窗口切换
- python+selenium多窗口切换
- Selenium如何实现窗口句柄的切换
- HDU-1573-X问题
- Spring ioc及aop思想
- 深入理解C++中public、protected及private用法
- 扇贝面试杂记
- 多线程实现文件拷贝
- Selenium之特殊窗口切换--iframe,弹窗,对话框
- idea配置非maven项目配置及热部署配置
- Ubuntu14.04LTS安装TensorFlow
- str2-json-jq-ajax
- String,StringBuffer,StringBuilder
- vim编辑命令
- memcache理解
- 老三长谈之Retrofit源码分析
- Hello CSDN!