1、最直接普通的方式:这个是设置固定的等待时间

   Thread.sleep(1000);  

2、显示等待方式(Explicit Wait):就是明确的要等待的元素在规定的时间之内都没找到,那么就抛出Exception.代码示例如下

public LoginPage LoginExpectingFailure(){
WebDriverWait wait = new WebDriverWait(driver,10);

wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("dologin")));

这里,10是要等待的秒数.如果没有满足until()方法中的条件,就会始终在这里wait 10秒,依然找不到,就抛出异常 。

还可以这样写:

    WebDriver chrome= new ChromeDriver() ;
    chrome.get( http://somedomain/url_that_delays_loading);
    WebElement e = (new WebDriverWait( chrome, 10)) .until(
        new ExpectedCondition< WebElement>(){
            @Override  //方法重写
            public WebElement ByPresent( WebDriver d) {
                return d.findElement( By.id("id locator"));
            }
        }

);

这样就通过回调函数,直接获得了这个WebElement.也就是页面元素 。

3、隐式等待方式(implicitlyWait):设置脚本在查找元素时的最大等待时间;

隐式等待方式(implicitlyWait):设置脚本在查找元素时的最大等待时间;
   driver.manage().timeouts().implicitlyWait(second, TimeUnit.SECONDS);    
代码示例如下:
    public boolean isByElementDisplayed(By by, int time,WebDriver chrome) {
        boolean status = true;
        while(!isByPresent(chrome, by)){
            chrome.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
        }
        return status;      
    }
    
    public boolean isByPresent(WebDriver chrome, By by){
        boolean display = false;
        try{
            chrome.findElement(by).isDisplayed();
            return display= true;
        }catch(NoSuchElementException e){
            return display;
        }

}

这里用while循环是如果明确需要查找的元素未找到,就继续循环等待;

selenium 延迟等待的三种方式的更多相关文章

  1. Python selenium —— 一定要会用selenium的等待,三种等待方式解读

    发现太多人不会用等待了,博主今天实在是忍不住要给大家讲讲等待的必要性. 很多人在群里问,这个下拉框定位不到.那个弹出框定位不到…各种定位不到,其实大多数情况下就是两种问题:1 有frame,2 没有加 ...

  2. 【转载】一定要会用selenium的等待,三种等待方式必会

    转载地址:http://blog.csdn.net/huilan_same/article/details/52544521,感谢博文,学习了 原文: 发现太多人不会用等待了,博主今天实在是忍不住要给 ...

  3. selenium使用等待的几种方式

    1.使用java的sleep try { Thread.sleep(3000); } catch (InterruptedException e) { // TODO Auto-generated c ...

  4. selenium元素等待的三种方法

    1.强制等待sleep() 使用方法:sleep(X),等待X秒后,进行下一步操作. 使用最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操 ...

  5. selenium&appium中的三种等待方式---基于python

    我们在实际使用selenium或者appium时,等待下个等待定位的元素出现,特别是web端加载的过程,都需要用到等待,而等待方式的设置是保证脚本稳定有效运行的一个非常重要的手段,在selenium中 ...

  6. Linux就这个范儿 第15章 七种武器 linux 同步IO: sync、fsync与fdatasync Linux中的内存大页面huge page/large page David Cutler Linux读写内存数据的三种方式

    Linux就这个范儿 第15章 七种武器  linux 同步IO: sync.fsync与fdatasync   Linux中的内存大页面huge page/large page  David Cut ...

  7. 0036 Java学习笔记-多线程-创建线程的三种方式

    创建线程 创建线程的三种方式: 继承java.lang.Thread 实现java.lang.Runnable接口 实现java.util.concurrent.Callable接口 所有的线程对象都 ...

  8. Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式

    参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...

  9. java核心知识点学习----创建线程的第三种方式Callable和Future CompletionService

    前面已经指出通过实现Runnable时,Thread类的作用就是将run()方法包装成线程执行体,那么是否可以直接把任意方法都包装成线程执行体呢?Java目前不行,但其模仿者C#中是可以的. Call ...

随机推荐

  1. Angular2.x-服务

    heroes之旅HeroesComponent目前正在获取并显示虚假数据. 在本教程重构之后,HeroesComponent将会精益求精并专注于支持视图.用模拟服务进行单元测试也会更容易. 为什么服务 ...

  2. 微信小程序 项目实战(三)list 列表页 及 item 详情页

    1.项目结构 2.list 列表页 (1)数据(逻辑) list.js // pages/list/list.js Page({ /** * 页面的初始数据 */ data: { title: '加载 ...

  3. 性能监控 -- 中间件性能监控【Weblogic控制台】

    通过WebLogic管理控制台可以实时获取各性能指标,通过控制台,可以对weblogic的性能及运行状况,发布的应用.资源等进行监视 1. 进入Weblogic管理控制台,单击服务器,选择一台需监控的 ...

  4. Android之——AIDL深入

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47071927 在上一篇博文<Android之--AIDL小结>中,我们 ...

  5. 我的gulp.js清单

    var gulp = require('gulp'), cssmin = require('gulp-clean-css'), //压缩css文件 concat = require('gulp-con ...

  6. [转] logback 常用配置详解(序)logback 简介

    转载文章:原文出处:http://aub.iteye.com/blog/1101222 logback 简介 Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日 ...

  7. android 怎样将主菜单图标改成按安装时间排序

    1. 在 LauncherModel.java 中增加例如以下代码, 假设是KK Launcher3 ApplicationInfo要替换为AppInfo public static final Co ...

  8. Bean Query 第一个版本号(1.0.0)已公布

    BeanQuery 是一个把对象转换为Map的Java工具库. 支持选择Bean中的一些属性.对结果进行排序和依照条件查询. 不只能够作用于顶层对象,也能够作用于子对象.很多其它具体的介绍能够看我的博 ...

  9. 2016/05/25 Ajax 跨域 转

    起因: 起因是这样的,为了复用,减少重复开发,单独开发了一个用户权限管理系统,共其他系统获取认证与授权信息,暂且称之为A系统:调用A系统以B为例.在B系统 中用ajax调用A系统系统的接口(数据格式为 ...

  10. 搭建nodejs服务,访问本地站点文件

    搭建nodejs服务器步骤: 1.安装nodejs服务(从官网下载安装) 2.在自己定义的目录下新建服务器文件如 server.js 例如,我在E:\PhpProject\html5\websocke ...