Selenium2关键话题:弹出框、页面跳转、遍历相同控件、执行JS
2014-07-07 14:27
483 查看
1、对话框处理
Alert alert = driver.switchTo().alert();
alert.accept(); //确定
alert.dismiss(); //取消
alert.getText(); //取到文本内容
实际系统中,弹出窗口必定是某些操作完成、信息加载之后用做提示,因此弹出窗口有时出现得快,有时出现得慢,直接使用driver.switchTo().alert();很容易出现执行失败的情况。
咱们先判断是否出现了弹出框,封装成以下方法:
protected boolean alertExists(int seconds) {
long start = System.currentTimeMillis();
while ((System.currentTimeMillis() - start) < seconds * 1000) {
try {
driver.switchTo().alert();
return true;
} catch (NoAlertPresentException ne) {
System.out.println("not find alert!");
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
return false;
}
2、页面跳转,弹出窗口
//得到当前窗口的句柄
String currentWindow = driver.getWindowHandle();
//得到所有窗口的句柄
Set<String> handles = driver.getWindowHandles();
Iterator<String> it = handles.iterator();
while(it.hasNext()){
if(currentWindow == it.next()) continue;
WebDriver window = driver.switchTo().window(it.next()); //获得新窗口,新的webDriver实例。
System.out.println("title,url = "+window.getTitle()+","+window.getCurrentUrl());
}
另外,还有的iframe 之间转换方法
driver.switchTo().defaultContent();
切换到某个frame:
driver.switchTo().frame("leftFrame");
从一个frame切换到另一个frame:
driver.switchTo().frame("mainFrame");
切换到某个window:
driver.switchTo().window("windowName");
3、遍历控件
List<WebElement> elements= driver.findElements(By.linkText("开始学习"));
elements.get(1).click();
findElements()方法返回所有相同的WebElement的List,咱们直接访问某一个元素,也可以遍历操作,,,这种功能大家都不回拒绝
遍历
for (Iterator<WebElement> i = elements.iterator(); i.hasNext();) {
WebElement integerRef = i.next();
}
4、执行JS
Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("(function(){inventoryGridMgr.setTableFieldValue('"+ inventoryId + "','" + fieldName + "','"
+ value + "');})()");
WebDriver dr = new ChromeDriver();
String js = "var user_input = document.getElementByIdx_x_x_x(\"passport_51_user\").title;return user_input;";
String title = (String)((JavascriptExecutor)dr).executeScript( js);
System.out.println(title);
相关文章推荐
- h5弹出层和页面跳转相继执行(js暂停)
- 弹出DIV,父窗口不可编辑,页面执行跳转
- 一个页面引用多个相同的用户控件时js失效
- js弹出提示信息,然后跳转到另一页面
- Jquery mobile页面跳转js无法执行的问题
- js 弹出提示信息,并跳转指定页面代码分享
- 一个封装的在后台弹出JS Alert消息和JS confirm信息以及跳转到指定的页面
- 一个封装的在后台弹出JS Alert消息和JS confirm信息以及跳转到指定的页面
- jquery mobile页面跳转后js不执行的问题
- js遍历页面所有控件(部分控件)
- jquery mobile框架,用超链接定位到其他页面,会出现不能跳转或者跳转后页面js代码不能执行现象
- 一个封装的在后台弹出JS Alert消息和JS confirm信息以及跳转到指定的页面
- js弹出提示信息,然后跳转到另一页面
- JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参(selected的值和页面其它元素的值)以及js的select
- jquery mobile页面跳转后js不执行的问题
- 在WebAsyncRefreshPanel控件里面的页面跳转和弹出提示
- 在无刷新页面执行Js弹出
- JS中弹出确定和取消对话框并跳转页面
- JQuery与JS 遍历和操作 父页面控件的比较
- 2015.2.16 关于delphi web控件打开新网页时弹出关闭页面(js代码)出错的解决办法研究