一个简单的appium脚本
这是一个简单的appium脚本,测试amazon购物过程的,过程包括搜索商品,然后从结果列表中选取中意的商品,然后加入购物车,等等。
它是一个最原始的脚本,对测试元素、数据、报告等未作任何的封装,后面计划把它合并到现有的webdriver的web测试框架里去。
运行中终于到的问题:
1、genymotion模拟器上执行有点延迟,脚本命令发出后大概3秒模拟器上才有反应;
2、在输入搜索条件后,执行回车命令,执行的效果是退格键(backspace),百撕不得骑姐啊;
3、再就是非原生对象的识别了,比如webview的对象,用sdk的uiautomationviewer有时就获取不到关键属性,这时可以到pc端尝试去识别,另外如果一个app是手机端特有的(不支持pc端),它的识别请参考另一篇文章
http://www.cnblogs.com/jingwei/p/4739618.html
如果用webdriver做过web的测试,看这个脚本应该很简单,基本和测试web类似,最大的区别就是,手机端的测试,需要指定desire capacity的一些属性,比如设备名字,测试平台,测试平台版本,被测app的包。
public class ContactTest {
private WebDriver driver;
//private AndroidDriver driver;
//private AppiumDriver driver;
@Before
public void setUp() throws Exception {
// set up appium
File classpathRoot = new File(System.getProperty("user.dir"));
System.out.println(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "app");
File app = new File(appDir, "com.amazon.mShop.android093010.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
//对测试设备和app的预定义
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
//capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("platformVersion", "4.4.4");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("app-package", "com.amazon.mShop.android");
capabilities.setCapability("app-activity", "com.amazon.mShop.splashscreen.StartupActivity");
//driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
System.out.println("ok??");
//driver = new AndroidDriver(new URL("http:/127.0.0.1:4723/wd/hub"), capabilities);
driver = new SwipeableWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void addContact(){
System.out.println("start test");
wait(10);
if(this.elementExist(driver, By.id("com.amazon.mShop.android:id/skip_sign_in_button")));{
wait(2);
driver.findElement(By.id("com.amazon.mShop.android:id/skip_sign_in_button")).click();
}
wait(5);
WebElement search = driver.findElement(By.id("com.amazon.mShop.android:id/search_edit_text"));
search.click();
wait(2);
WebElement search2 = driver.findElement(By.id("com.amazon.mShop.android:id/rs_search_src_text"));
search2.sendKeys("huawei");
search2.sendKeys(Keys.ENTER);
wait(2);
List<WebElement> searchlist = driver.findElements(By.id("com.amazon.mShop.android:id/rs_search_dropdown_item_text"));
for(WebElement l:searchlist){
System.out.println(l.getText());
}
System.out.println(searchlist.size());
if(searchlist.size()>0)
searchlist.get(0).click();
wait(5);
WebElement honor3c = driver.findElement(By.name("Huawei Honor 3C Android 4.2 Quad Core 1.3GHz 3G" +
" Dual Sim 5.0 Inch HD Touch Screen 2GB RAM Unlocked 3G Smartphone Black"));
honor3c.click();
//这里可以继续加入购物的其他操作
/*
List<WebElement> textFieldsList = driver.findElements(By.tagName("textfield"));
textFieldsList.get(0).sendKeys("Some Name");
textFieldsList.get(2).sendKeys("Some@example.com");
driver.findElement(By.name("Save")).click();
*/
System.out.println("test end");
}
public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen {
private RemoteTouchScreen touch;
public SwipeableWebDriver(URL remoteAddress, DesiredCapabilities capabilities) {
super(remoteAddress, capabilities);
touch = new RemoteTouchScreen(getExecuteMethod());
}
public TouchScreen getTouch() {
return (TouchScreen) touch;
}
}
public boolean elementExist(WebDriver driver, By pro){
try{
driver.findElement(pro);
return true;
}catch(NoSuchElementException e){
return false;
}
}
public void wait(int i){
try {
Thread.sleep(i*1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
一个简单的appium脚本的更多相关文章
- 一个简单的shell脚本
一个简单的shell脚本 一个简单的shell脚本 编写 假设我想知道目前系统上有多少人登录,使用who命令可以告诉你现在系统有谁登录: 1.[KANO@kelvin ~]$ who2.KANO tt ...
- 手动编写一个简单的loadrunner脚本
loadrunner除了自动录制脚本外,还可以手动编写脚本,通过右键+inset step添加步骤,还可以手动添加事务,集合点等 下面是一个简单的Action脚本,服务是运行在本机的flask服务: ...
- 一个简单的ETL脚本的内容
一个简单的ETL脚本应该包含如下内容 1.注释 2.设置字符集 3.基础路径参数 脚本路径 票据路径 日志路径 当前SHELL的脚本别名:declare SHELL_NAME=“${basename ...
- [opentwebst]一个简单的登陆脚本
这个是个简单的vbs脚本,使用opentwebst进行录制 'Use the command line below to launch the script (or just double click ...
- 如何在linux下编写一个简单的Shell脚本程序
在了解了linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell的脚本程序了 Shell既为一种命令解释解释工具,又是一种脚本编程语言 ...
- 一个简单的Shell脚本(解决windows上文本在macos上乱码问题)
之所以有这一篇文章,是因为之前我写过的一篇文章:“解决Mac上打开txt文件乱码问题”:传送门: https://www.cnblogs.com/chester-cs/p/11784079.html ...
- 如何用VBS编写一个简单的恶搞脚本
windows系统的电脑, 首先右击桌面,选择新建-文本文档,在桌面上新建一个文本文档: 随后打开计算机或者是我的电脑,点击其中的组织(xp系统多为工具),选择下面的文件夹和搜索选项 ...
- 用shell写一个简单DHCP配置脚本
轩轩写的这个小脚本,主要是可以进行对dhcp服务的安装.简单配置.开启.关闭/查看状态等情况 使用呢非常简单,按照步骤进行准确的设置就可以啦 #!/bin/bashyum -y install dhc ...
- 自动化运维:(3)写一个简单的Shell脚本(案例)
一.需求 1.test.sh 脚本执行时候需要添加参数才能执行 参数和功能详情如下: 参数 执行效果 start 启动中... stop 关闭中... restart 重启中... * 脚本帮助信息. ...
随机推荐
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上-b
用fir.im测试已经好长时间了,感觉每次打包上传都很麻烦,想着是不是可以用脚本自动打包,在网上搜了一下确实有,下面总结一下如何使用脚本自动打包上传到fir.im,以及打包过程中遇到的问题和解决办法 ...
- Angular与React的一些看法
Angular - React之争 Angular和React无疑是目前最受追捧的两个前端框架,谷歌也发现Angular1.x不足的地方,开始开发2.0版本,脸书发现React的组件化和虚拟DOM非常 ...
- 远程登陆MS azure Linux 虚拟机
http://blogs.technet.com/b/uktechnet/archive/2013/11/12/running-a-remote-desktop-on-a-windows-azure- ...
- jquery判断对象是否获得焦点
var isFocus=$("#tRow").is(":focus"); if(true==isFocus){ alert("focus") ...
- iOS socket编程 第三方库 AsyncSocket(GCDAsyncSocket)
Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些消息.所以,Socket一定包含了通信的双发,即客户端(Clien ...
- HDU 1158 Employment Planning (DP)
题目链接 题意 : n个月,每个月都至少需要mon[i]个人来工作,然后每次雇佣工人需要给一部分钱,每个人每个月还要给工资,如果解雇人还需要给一笔钱,所以问你主管应该怎么雇佣或解雇工人才能使总花销最小 ...
- Web Api 入门
http://www.cnblogs.com/developersupport/p/WebAPI-Security.html http://www.cnblogs.com/r01cn/archive/ ...
- 【BZOJ 2829】 2829: 信用卡凸包 (凸包)
2829: 信用卡凸包 Description Input Output Sample Input 2 6.0 2.0 0.0 0.0 0.0 0.0 2.0 -2.0 1.5707963268 Sa ...
- [Unity菜鸟] Unity读XML
1. 在Unity中调试可行,发布成exe可行,发布成web不行 Application.dataPath 在Unity中调试是在“..Assets”文件夹下, 发布成exe文件是在“..yourNa ...
- FocusWriter
2. FocusWriter 如果你正在从事某种写作——小说.博客.文档等——你绝对希望认识一下FocusWriter.它已经有近十年的发布历史了,但是一直是我们最喜欢的无分心写作应用之一.如果你希望 ...