Appium 三种wait方法(appium 学习之改造轮子)
2015-10-22 11:09
309 查看
前些日子,配置好了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
隐式等待,全局等待30s不管元素是否已经加载
WebDriverWait 显示等待,这个需要增加一定等待时间,显示等待时间可以通过WebDriverWait 和util来决定,比如这个timeOut是60,如果该元素60s以内出现就不在等待
以上三种方法中,只用WebDriverWait是selenium所特有,在java-client中也找不到相应,如果想使用这种方法怎么办?
改造轮子,首先添加AndroidDriverWait.java, 其实是将WebDriverWait的类型改成AndroidDriverWait
具体代码如下:
View
Code
接着需要修改接口:ExpectedCondition,将其WebDriver的类型替换为AndroidDriver
具体代码:
View
Code
经过修改之后,就可以在appium中直接使用:
知乎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")); } });
相关文章推荐
- Android 画虚线边框
- iOS 知识大全
- Android内存分析和调优
- iOS 9适配系列教程
- AndroidManifest.xml中的minSdkVersion、targetSdkVersion、maxSdkVersion和project.properties中target区别
- iOS APP上线流程
- iOS 9 适配出现的问题
- COCOS2DX3.0的3种触摸响应机制
- 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理 - by Glede
- JS判断设备是否是移动端自动跳转到对应页面的简单代码
- MvcSiteMapProvider配置使用
- iOS 蓝牙编程
- Xocde7 里面Xib的使用
- Android——继承SimpleAdapter重写自己的getView
- Android——继承SimpleAdapter重写自己的getView
- LayoutInflater类
- Ubuntu下设置外部库(so,shared object)运行环境和ROS中使用外部库编译
- iOS 中数字的格式化处理
- iOS开发 实战篇---Xcode7免费真机测试流程
- AppCan邹优镇:移动改变生产,构建企业核心竞争力