• appium 等待方法 转


    前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html

                        知乎Android客户端登陆:http://www.cnblogs.com/tobecrazy/p/4579631.html

                                           appium实现截图和清空EditText:  http://www.cnblogs.com/tobecrazy/p/4592405.html

    学过selenium的都知道,一般等待元素加载有三种办法:

    • sleep                  Thread.sleep(60000) 强制等待60s
    • implicitlyWait      
       driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);  
          隐式等待,全局等待30s不管元素是否已经加载
    • WebDriverWait     显示等待,这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait 和util来决定,比如这个timeOut是60,如果该元素60s以内出现就不在等待
    复制代码
    WebDriverWait wait = new WebDriverWait(driver, 60);
        WebElement e= wait.until(new  ExpectedCondition<WebElement>() {
                @Override
                public WebElement apply(WebDriver d) {
                    return d.findElement(By.id("q"));
                }
            })
    复制代码

      以上三种方法中,只用WebDriverWait是selenium所特有,在java-client中也找不到相应,如果想使用这种方法怎么办?

    改造轮子,首先添加AndroidDriverWait.java, 其实是将WebDriverWait的类型改成AndroidDriverWait

    具体代码如下:

      

     View Code

    接着需要修改接口:ExpectedCondition,将其WebDriver的类型替换为AndroidDriver

    具体代码:

     View Code

    经过修改之后,就可以在appium中直接使用:

    复制代码
            //wait for 60s if WebElemnt show up less than 60s , then return , until 60s
            WebElement showClose = new AndroidDriverWait(driver, 60)
                    .until(new ExpectedCondition<WebElement>() {
                        public WebElement apply(AndroidDriver d) {
                            return d.findElement(By
                                    .id("com.zhihu.android:id/showcase_close"));
                        }
    
                    });
    复制代码

    个人心得:

              做自动化也有4年多,之前做的是server端的测试,并未太多的关注过selenium,现在selenium上面的积累已经一年多,

               起初学东西是拿来用,不知其原理,只知道这么用,长期以来,并未有什么进步。最近看到一些大牛分享的学习思路,才发现学东西要循序渐进,

               学会使用->熟练使用->了解掌握其原理->分析改造源码->造轮子

              经过这一系列的学习和总结,就能成为资深人士。

  • 相关阅读:
    减少注入元
    浅谈微服务基建的逻辑
    Linux系统Java环境安装配置
    ASP.NET Core 依赖注入
    C#并发编程实例讲解-概述(01)
    Linux系统从安装开始
    关于C#获取动态的时间差函数
    SQL Server 存储过程
    jQuery选择器大全(48个代码片段+21幅图演示)
    对齐方式
  • 原文地址:https://www.cnblogs.com/fenqing3108/p/6253338.html
Copyright © 2020-2023  润新知