• 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();
    }
    }
    }

     

  • 相关阅读:
    安卓开发之有序广播
    安卓开发之无序广播
    安卓开发之短信发送器的开发
    安卓开发之隐式意图与显示意图
    安卓root权限 被提示Read-only file system 或 Operation not permitted 解决方案
    gcc 的基本使用和静态库、动态库的制作与使用
    Python类的学习,看这一篇文章就够了!
    Qt 添加程序图标和系统托盘图标
    Qt ListWidget item 发起拖放
    Qt 接受拖放
  • 原文地址:https://www.cnblogs.com/jack1989/p/7657501.html
Copyright © 2020-2023  润新知