Selenium2(WebDriver)总结(五)---元素操作进阶(常用类)
1、Alert类
- Alert是指windows弹窗的一些操作,需要new一个Alert类
- driver.switchTo().alert():切换到alert窗口
- alert.getText():取得弹窗上面的字符串
- alert.accept():点击确定/ok类的按钮,使弹窗消失
- alert.dismiss():取消
public void testAlert(){ WebElement element = driver.findElement(By.className("alert")); element.click(); Alert alert = driver.switchTo().alert(); String text = alert.getText(); alert.accept(); //alert.dismiss(); System.out.println(text); }
使用Actions类
- 先要new一个Actions的类对象
- 最后的perform()一定要加上,否则执行不成功
public void testAlertByActions(){ WebElement element = driver.findElement(By.className("alert")); Actions action = new Actions(driver); action.click(element).perform(); Alert alert = driver.switchTo().alert(); String text = alert.getText(); alert.accept(); //alert.dismiss(); System.out.println(text); }
2、Action类
- 先要new一个Actions的类对象
- 最后的perform()一定要加上,否则执行不成功
public void testActions(){ WebElement element = driver.findElement(By.className("over")); Actions action = new Actions(driver); action.moveToElement(element).perform(); String text = driver.findElement(By.id("over")).getText(); System.out.println(text); }
3、调用JS
- 一般用来执行一段JS,来改变HTML
- 一些非标准控件无法用selenium2的API时,可以执行JS的办法来取代
- executeScript这个方法的参数为字符串,为一段JS代码
public void testJS(){ JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("alert('helloworld')"); }
4、Wait机制及实现
- 在规定的时间内只要符合条件即返回,下面的代码中是只要isDisplayed即返回
public void testWait(){ WebElement waitButton = driver.findElement(By.id("wait")); waitButton.click(); boolean flag = new WebDriverWait(driver, 10).until ( new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver driver) { return driver.findElement(By.className("red")).isDisplayed(); } } ); if(flag){ String text = driver.findElement(By.className("red")).getText(); System.out.println(text); } }
5、Iframe操作
- 如果iframe标签有能够唯一确定的id或者name,就可以直接用id或者name的值:driver.switchTo().frame("aa");
- 如果iframe标签没有id或者name,但能够通过页面上确定其是第几个(也就是通过index来定位iframe,index是从0开始的):driver.switchTo().frame(0);
- 还可以通过xpath的方式来定位iframe,写法如下:
- WebElement iframe = driver.findElement(By.xpath("//iframe[@name='aa']"));
- driver.switchTo().frame(iframe);
public void testIFrame(){ driver.findElement(By.id("user")).sendKeys("test"); driver.switchTo().frame("aa"); driver.findElement(By.id("user")).sendKeys("iframe test"); driver.switchTo().defaultContent();//返回顶层frame driver.findElement(By.id("user")).sendKeys("---new test"); }
6、多窗口切换
- gettWindowHandles:取得driver所打开的所有的页面的句柄
- witchTo是指切换到相应的窗口中去,window中的参数是指要切过去的窗口的句柄
public void testMultiWindow(){ driver.findElement(By.id("user")).sendKeys("test"); String handle = driver.getWindowHandle();//获取当前窗口的句柄 System.out.println(handle); WebElement element = driver.findElement(By.className("open")); element.click(); Set<String> handles = driver.getWindowHandles(); for(String s : handles) { if(!s.equals(handle)) { System.out.println(s); driver.switchTo().window(s); driver.findElement(By.id("kw")).sendKeys("glen"); } } driver.switchTo().window(handle); driver.findElement(By.id("user")).sendKeys("---new test"); }
作者:Glen.He
出处:http://www.cnblogs.com/puresoul/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。