软件测试培训
达内IT学院
400-996-5531
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'");
填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!
Copyright © 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有
Tedu.cn All Rights Reserved