zoukankan      html  css  js  c++  java
  • Selenium2(WebDriver)中执行JavaScript代码 (转)

    在用selenium编写web页面的自动化测试代码时,可能需要执行一些JavaScript代码,selenium本身就支持执行js,我们在代码中可以使用executeScript、executeAsyncScript这两个方法来执行JS。 
    executeScript是同步方法,用它执行js代码会阻塞主线程执行,直到JS代码执行完毕; 
    executeAsyncScript方法是异步方法,它不会阻塞主线程执行。

    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript(String script, object... args);
    
    executeScript方法如果有返回值,有以下几种情况:
       1、如果返回一个页面元素(document element), 这个方法就会返回一个WebElement
       2、如果返回浮点数字,这个方法就返回一个double类型的数字
       3、返回非浮点数字,方法返回Long类型数字
       4、返回boolean类型,方法返回Boolean类型
       5、如果返回一个数组,方法会返回一个List<Object>
       6、其他情况,返回一个字符串
       7、如果没有返回值,此方法就会返回null
    

    JavascriptExecutor js = (JavascriptExecutor) driver; 


    // 用js弹出alert

    js.executeScript("alert('Test Case Execution Is started Now..');");
    driver.switchTo().alert().accept();
    // 用js判断页面加载完毕,返回complete

    System.out.println("readyState: " + js.executeScript("return document.readyState").toString());
    // 用js得到页面的title

    String title = (String) js.executeScript("return document.title");
    System.out.println("current page title get by js: " + title);
    // 用js得到页面的domain name

    System.out.println("current page domain name get by js: " + js.executeScript("return document.domain"));
    // 用js操作页面元素,如高亮显示某个元素


    WebElement element = driver.findElement(By.id("kw"));
    js.executeScript("arguments[0].setAttribute('style', arguments[1]);", element, "color: orange; border: 4px solid orange;");

    /** * 每隔一秒check一下页面加载是否完成,check次数是25 */
    public void checkPageIsReady()
    { JavascriptExecutor js = (JavascriptExecutor) driver;

    for (int i = 0; i < 25; i++) {
    if ("complete".equals(js
    .executeScript("return document.readyState").toString())) {
    break;
    } try {
    Thread.sleep(1000); }
    catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }

     

  • 相关阅读:
    shell函数
    sed命令
    交互式输入与for语句
    day01_云计算概述及kvm介绍
    grep与正则表达式
    shell的编程原理
    shell的文本处理工具
    shell的基础入门
    深入理解JavaScript中 fn() 和 return fn() 的区别
    一篇笔记带你快速掌握面向对象的Javascript(纯手打)
  • 原文地址:https://www.cnblogs.com/jack1989/p/7657501.html
Copyright © 2011-2022 走看看