一、appium简介
appium类库封装了标准Selenium客户端类库,为用户提供所有常见的JSON格式selenium命令以及额外的移动设备控制相关的命令,如多点触控手势和屏幕朝向。
1、appium特点
支持跨平台,支持liunx、windows及maxos系统运行
支持多语言开发,支持python、java、php等
2、appium工作原理
3、环境安装
支持jdk1.8以上的版本,配置环境变量正确。
安装node基础环境
安装appium,配置如下
安装eclipse,进行脚本开发
安装模拟器
二、appium开发自动化测试脚本
1、创建工程
启动eclipse,创建java工程
添加一个lib文件夹
复制三个jar包到lib中
选中三个jar包,并右键->build path->add to build path
src下创建包:com.qf.calc
包下创建class类文件
2、实现计算器的加法功能的自动化脚本
package com.qf.calc;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.AppiumDriver;
/*
自动化实现计算器app的加法运算:1+2=3
c/s架构系统:
c:现在写的这个脚本
s:appium服务,现在已经正常运行了
分析:
先做一个配置,要指定:
测试的app所在的平台是什么:Android、ios、firefoxos
测试的设备是手机还是模拟器?Android Emulator、序列号
指定android的版本号是多少?5.1.1
操作哪一个app:包名
操作的入口:activity
c端需要连接s端的appium服务,
找到了设备及设备上的app了
就可以进行页面元素识别和操作了。
给出断言
*/
public class CalcTest {
public static void main(String[] args) throws MalformedURLException, InterruptedException {
// TODO Auto-generated method stub
//DesiredCapabilities类就是封装配置参数的
DesiredCapabilities des = new DesiredCapabilities();
des.setCapability("platformName", "Android");
des.setCapability("platformVersion", "5.1.1");
des.setCapability("deviceName", "Android Emulator");
des.setCapability("appPackage", "com.lilysgame.calculatorjw");
des.setCapability("appActivity", "com.lilysgame.calculator.MainActivity");
des.setCapability("noReset", true);
//c端需要连接s端的appium服务
//driver = webdriver.Chrome()
//创建appium的对象
//匿名对象:new xx()
AppiumDriver driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"),des);
//就可以进行页面元素识别和操作了。1+2=3
//com.lilysgame.calculatorjw:id/btnOne
//点一下1按钮
driver.findElementById("com.lilysgame.calculatorjw:id/btnOne").click();
Thread.sleep(2000);
//点一下+按钮
driver.findElementById("com.lilysgame.calculatorjw:id/btnAdd").click();
Thread.sleep(2000);
//点一下2按钮
driver.findElementById("com.lilysgame.calculatorjw:id/btnTwo").click();
Thread.sleep(2000);
//点一下=按钮
driver.findElementById("com.lilysgame.calculatorjw:id/btnEqual").click();
Thread.sleep(2000);
//断言,查看结果是不是3
String shiJi = driver.findElementById("com.lilysgame.calculatorjw:id/et_show").getAttribute("text");
String yuQi = "3";
if(shiJi.equals(yuQi)){
System.out.println("测试通过");
}else{
System.out.println("测试失败");
}
//关闭对象
driver.quit();
}
}
通过eclipse编写自动化脚本,appium实现接收,对模拟器进行自动化登录操作
package qiqi;
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.remote.DesiredCapabilities;
import io.appium.java_client.AppiumDriver;
public class qq {
public static void main(String[] args) throws MalformedURLException, InterruptedException {
// TODO Auto-generated method stub
DesiredCapabilities des = new DesiredCapabilities();
des.setCapability("platformName","Android");
des.setCapability("platformVersion","7.1.2");
des.setCapability("deviceName","Android Emulator");
des.setCapability("appPackage","com.tencent.qqlite");
des.setCapability("appActivity","com.tencent.mobileqq.activity.RegisterGuideActivity");
des.setCapability("noReset", true);
//com.tencent.qqlite:id/btn_login
AppiumDriver driver = new AppiumDriver(new URL("http://0.0.0.0:4723/wd/hub"),des);
driver.findElementById("com.tencent.qqlite:id/btn_login").click();
Thread.sleep(3000);
driver.findElementByAccessibilityId("请输入QQ号码或手机或邮箱").sendKeys("3577715614");
Thread.sleep(2000);
driver.findElementByAccessibilityId("请输入密码").sendKeys("wjq666wjq");
driver.findElementByAccessibilityId("登录QQ").click();
}
}