博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Selenium2(WebDriver)总结(五)---元素操作进阶(常用类)
阅读量:5279 次
发布时间:2019-06-14

本文共 3835 字,大约阅读时间需要 12 分钟。

 

 1、Alert类

  1.  Alert是指windows弹窗的一些操作,需要new一个Alert类
  2.  driver.switchTo().alert():切换到alert窗口
  3.  alert.getText():取得弹窗上面的字符串
  4.  alert.accept():点击确定/ok类的按钮,使弹窗消失
  5.  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类

  1. 先要new一个Actions的类对象
  2. 最后的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类

  1. 先要new一个Actions的类对象
  2. 最后的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 

  1. 一般用来执行一段JS,来改变HTML
  2. 一些非标准控件无法用selenium2的API时,可以执行JS的办法来取代
  3. 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
() { 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操作

  1. 如果iframe标签有能够唯一确定的id或者name,就可以直接用id或者name的值:driver.switchTo().frame("aa");
  2. 如果iframe标签没有id或者name,但能够通过页面上确定其是第几个(也就是通过index来定位iframe,index是从0开始的):driver.switchTo().frame(0);
  3. 还可以通过xpath的方式来定位iframe,写法如下:
    1. WebElement iframe = driver.findElement(By.xpath("//iframe[@name='aa']"));
    2.  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、多窗口切换

  1. gettWindowHandles:取得driver所打开的所有的页面的句柄
  2. 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
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"); }

 

作者:
出处: 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/abcd19880817/p/7210758.html

你可能感兴趣的文章
java获取hostIp和hostName
查看>>
关于web服务器和数据库的各种说法(搜集到的)
查看>>
《TCP/IP 详解 卷一》读书笔记 -----第四章 ARP
查看>>
C# Stream 和 byte[] 之间的转换
查看>>
OMG: daily scrum nine
查看>>
redis与spring结合错误情况
查看>>
第六章 字节码执行方式--解释执行和JIT
查看>>
字符串方法title()、istitle()
查看>>
yield语句
查看>>
查看linux系统中占用cpu最高的语句
查看>>
[洛谷P1738]洛谷的文件夹
查看>>
ubuntu server设置时区和更新时间
查看>>
【京东咚咚架构演进】-- 好文收藏
查看>>
【HTML】网页中如何让DIV在网页滚动到特定位置时出现
查看>>
文件序列化
查看>>
jQuery之end()和pushStack()
查看>>
Bootstrap--响应式导航条布局
查看>>
Learning Python 009 dict(字典)和 set
查看>>
JavaScript中随着鼠标拖拽而移动的块
查看>>
HDU 1021 一道水题
查看>>