软件测试培训

亿元级外企Java培训企业

  • 全国服务监督电话400-827-0010
软件测试培训 > 软件测试教程 > 高级应用续--Selenium自动化(十二)
  • 高级应用续--Selenium自动化(十二)

    发布:软件测试培训  来源:软件测试教程  时间: 2016年08月16日

  • 高级应用续--Selenium自动化(十二)...

  • 1. 等待页面元素加载完成

    /强制等待(弊端较多,会造成时间的浪费或者休眠时间不够)
    Thread.sleep(2000);
     
    //加入循环等待优化
    long start = System.currentTimeMillis();
    while (true) { //强制循环
        Thread.sleep(500); //休眠500ms
        if (driver.getTitle().indexOf( “登录成功”) != -1) {
            break;
        }
        if (System.currentTimeMillis() - start >= 10000) {
            break;
        }
    }
    
    //隐性等待—推荐使用
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    设置全局元素等待超时时间。隐性等待是指当要查找元素,而这个元素没有马上出现时,告诉WebDriver查询Dom一定时间。默认值是0,但是设置之后,这个时间将在WebDriver对象实例整个生命周期都起作用。(处理Table对象时,需要将此 置为默认值)

    /显性等待—不推荐
    WebDriverWait wait = new WebDriverWait(driver, 10); //设置等待时间,最大等待10秒
    wait.until(new ExpectedCondition<WebElement>() {
    @Override
    public WebElement apply(WebDriver d) {
    //这个元素就是需要等待出现的元素
    return d.findElement(By.className("red_box"));
    }
    });

    WebDriverWait类的构造方法接受了一个WebDriver对象和一个等待最长时间(10秒)。然后调用until方法,其中重写了ExpectedCondition接口中的apply方法,让其返回一个WebElement,即加载完成的元素,然后点击。默认情况下,WebDriverWait每500毫秒调 一次ExpectedCondition,直到有成功的返回,当然如果超过设定的值还没有成功的返回,将抛出异常。

    2. 执行JS脚本

    // 设置日期控件的读写属性
    ((JavascriptExecutor)driver).executeScript("document.getElementById(\"fromDate\").readOnly=false ");
     
    // 直接为日期控件强行赋值
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.getElementById('fromDate').setAttribute('value','2013-06-21');");
     
    // 富文本编辑框的处理
    driver.switchTo().frame("ueditor_0");
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript("document.body.innerHTML='ABCDEFG'");
  • 上一篇:高级应用--Selenium自动化(十一)

    下一篇:封装--Selenium自动化(十三)

网站导航
2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56