更多课程 选择中心

软件测试培训
达内IT学院

400-996-5531

高级应用续--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自动化(十三)

数据驱动之sqlite--Selenium自动化(二十一)

数据驱动之csv--Selenium自动化(二十)

数据驱动之properties--Selenium自动化(十九)

Page Object改进--Selenium自动化(十八)

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

陕西省

湖南省

贵州省

云南省

广西省

海南省