Appium 三种wait方法(appium 学习之改造轮子)

来源:互联网 发布:淘宝客服主管交流群 编辑:程序博客网 时间:2024/05/04 09:02

前些日子,配置好了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"));                    }                });
复制代码
0 0
原创粉丝点击