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

   Thread.sleep(1000);  
2、隐式等待方式(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循环是如果明确需要查找的元素未找到,就继续循环等待;
3、显示等待方式(Explicit Wait):就是明确的要等待的元素在规定的时间之内都没找到,那么就抛出Exception.代码示例如下:

new WebDriverWait(chrome,
15).until(

ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))

);    

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

还可以这样写:

    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.也就是页面元素 。

selenium-03-02操作元素-等待的更多相关文章

  1. Selenium(十一):设置元素等待、上传文件、下载文件

    1. 设置元素等待 前面我们接触了几个元素等待方法,sleep.implicitly_wait方法,这一章我们就来整体学一下. 现在大多数Web应用程序使用的都是AJAX技术.当浏览器加载页面时,页面 ...

  2. Selenium入门6 操作元素,获取元素属性

    取元素的text,属性get_attribute,标签名tag_name 操作元素:send_keys输入,click点击,submit提交,clear清除输入 状态判断:is_display,is_ ...

  3. selenium定位,操作元素

    1.定位方式 1.id driver.find_element_by_id('username').send_keys('byhy') 2.name driver.find_element_by_na ...

  4. selenium(3):学习操作元素基本方法

    来源:<selenium webdriver基于Python源码案例> 一.打开网页①第一步:从selenium里面导入webdriver模块②打开浏览器(Ie和Chrome对应下面的)③ ...

  5. Java Selenium (十二) 操作弹出窗口 & 智能等待页面加载完成 & 处理 Iframe 中的元素

    一.操作弹出窗口   原理 在代码里, 通过 Set<String> allWindowsId = driver.getWindowHandles(); 来获取到所有弹出浏览器的句柄, 然 ...

  6. [小北De编程手记] : Lesson 03 - Selenium For C# 之 元素定位

    无论哪一种自动化测试的驱动框架(基于B/S,桌面应用,还是手机App).都应当具有一套优秀的元素定位技术.通常的自动化测试流程也可以简单的归结为是一个从被测试程序中识别或是定位元素以及执行操作和验证元 ...

  7. WebDriver API——延时操作及元素等待

    在自动化测试过程当中,受网络.测试设备等诸多因素的影响,我们经常需要在自动化测试脚本中添加一些延时来更好的定位元素来进行一系列的操作. 一般有这么几种方式: 1.implicitlyWait.识别对象 ...

  8. Appium(八):Appium API(二) 元素等待、元素操作

    1. 元素等待 我们在使用脚本的时候,可能会由于网络.服务器处理.电脑等原因,我们想要找的元素没有加载出来,这个时候如果直接定位就可能会报错. 这个时候我们就可以设置元素等待了. 什么叫元素等待呢? ...

  9. Selenium(八):其他操作元素的方法、冻结界面、弹出对话框、开发技巧

    1. 其他操作元素的方法 之前我们对web元素做的操作主要是:选择元素,然后点击元素或者输入字符串. 还有没有其他的操作了呢?有. 比如:比如鼠标右键点击.双击.移动鼠标到某个元素.鼠标拖拽等. 这些 ...

随机推荐

  1. javaio字节流复制文件夹

    public class Copy1 { public static void main(String[] args) throws IOException { File src=new File(& ...

  2. 感受一下.net中用 lambda与 linq 做数据集过滤的不同

    lambda: ids.Add( _hahahacontext .hahahamodel .FirstOrDefault( a => //lambda做过滤 a.name == "张宏 ...

  3. springboot--事务的使用

    @Transactional原理 事务是一些sql语句对数据库操作的集合,因此如果在一个Java方法里涉及了对数据库的操作,业务需要的话我们就可以考虑把这些操作作为一个事务.通过在方法上加个@Tran ...

  4. Storm 系列(七)—— Storm 集成 Redis 详解

    一.简介 Storm-Redis 提供了 Storm 与 Redis 的集成支持,你只需要引入对应的依赖即可使用: <dependency> <groupId>org.apac ...

  5. Api接口文档管理工具,你知道哪些呢?

    上周看到有人在我的Github开源项目中提了个issue,说是否考虑接入swagger.那今天我就用swagger与其他接口文档工具做对比,同时说说Api接口文档工具的那点事.如今,在前后端分离开发的 ...

  6. acm未解之谜-洛谷P1109学生分组

    把每一组的学生个数调度到一个给定区间范围内: 看了一圈题解,大佬都对原因避而不答: #include <iostream> #include <algorithm> using ...

  7. 2017 省赛选拨 火车入站 CSU 1757 模拟

    1757: 火车入站 Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 512     ...

  8. Unity3D 客户端编程

    Photon Server 和 Unity3D 数据交互: Photon Server 服务端编程 Unity3D 客户端编程. VS2017 之 MYSQL实体数据模 1:打开unity新建新项目, ...

  9. 拿 C# 搞函数式编程 - 1

    最近闲下来了,准备出一个 C# 搞 FP 的合集.本合集所有代码均以 C# 8 为示例. 可能你说,为什么要这么做呢?回答:为了好玩.另外,意义党们请 gun cu ke! C# 有委托,而且有 Fu ...

  10. 一文看尽Java-多线程概念

    一.前言 主要讲解一下多线程中的一些概念,本文之后就开始针对JUC包的设计开始解读: 二.概念     线程安全     1.存在共享数据(临界资源):2.多个线程同时操作共享数据:只有同时出现这两种 ...