一,准备好需要安装的软件
1.JDK
2.sdk
3.android studio
4.appium最新版为1.10.0
5.安卓模拟器或真机
6.一些需要的罐子包,方式添加详细下文说明
二,环境变量
1.JDK
安装好JDK之后,进行环境变量配置
classpath中:
变量名:%JAVA_HOME%
变量值:C:\ Program Files \ Java \ jdk1.8.0_131(找到自己jdk安装路径即可)path中:
%JAVA_HOME%\ bin;
2.SDK
将sdk解压到某个盘,sdk的路径不要包含中文 .classpath
中:
变量名:%
Android_Home %变量值:D:\ Android \ androidsdk(此处是自己的安装路径)
在path中添加:
%Android_Home%\平台工具;%Android_Home%\工具;
3.android studio
这个直接安装就可以了,可以安装到其他盘,不一定是C盘
4.appium直接
点击安装,安装完成后
类路径中:
变量值:APPIUM_HOME
变量名:C:\ Program Files(x86) \ Appium
路径中:
%APPIUM_HOME%\ node_modules.bin
三,使用android studio编写测试脚本(此处先以运行官方演示为例)
1。创建项目
因为android studio不能直接新建java项目,所以需要先创建一个android项目
最后点击完成,然后应该为这样:
然后新模块
选择java库
此处我创建的是一个名叫demoTest的库
创建完成之后是这样的:
2.项目创建完成之后,创建³³需要一个文件夹数
在项目的的java目录下,创建一个名叫应用的文件夹,应用程式文件夹的目的是存放APK文件。
4.下载官方apk文件:
地址:https://github.com/appium-boneyard/sample-code/blob/master/sample-code/apps/ContactManager/ContactManager.apk
下载好之后,将apk文件放入刚刚创建的应用文件夹中
5.官方例子中有各种测试脚本的例子。官方地址为:
https://github.com/appium-boneyard/sample-code/tree /主/样本码/示例/ JAVA
由于这里需要对官方代码有一些改动,所以我直接粘贴过来,直接复制就行
public class AndroidContactaTest {
private AppiumDriver mobiledriver;
private SwipeClass swipe;
@BeforeTest
public void beforeTest( ) throws MalformedURLException {
File classpathRoot = new File(System.getProperty("user.dir"));
//app的目录
File appDir = new File(classpathRoot, "/src/main/java/apps/");
//app的名字,对应你apps目录下的文件
File app = new File(appDir, "ContactManager.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
//appium的版本
capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.10.0");
//android系统的版本
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "5.1.1");
//系统
capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
//
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Appium");
//设备名称 模拟器名称
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "yyf");
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
//设置app的包名
capabilities.setCapability("appPackage", "com.example.android.contactmanager");
//设置app的启动activity
capabilities.setCapability("appActivity", ".ContactManager");
capabilities.setCapability("newCommandTimeout", 2000);
//此处的地址是appium中的host地址,可以自己修改,只要与appium对应就可以
mobiledriver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@AfterTest
public void afterTest( ) {
mobiledriver.quit();
}
/**
* 要执行的的测试方法
*/
@Test
public void addContact(){
//利用Xpath的方法寻找text值为Add Contact的控件
WebElement el = mobiledriver.findElement(By.xpath(".//*[@text='Add Contact']"));
//点击这个控件
el.click();
//利用类名获取界面上所有的EditText
List textFieldsList = mobiledriver.findElementsByClassName("android.widget.EditText");
//第一个EditText输入内容Some Name
textFieldsList.get(0).sendKeys("Some Name");
//第三个EditText输入内容Some Name
textFieldsList.get(2).sendKeys("[email protected]");
//在坐(100,500)滑动到(100,100) 时间为2毫秒
swipe.swipeToDown(mobiledriver);
//用xpath的方式寻找到text值为Save的控件,然后点击
mobiledriver.findElementByXPath(".//*[@text='Save']").click();
}
}
直接复制粘贴就好,由于appium 1.10不支持swipe滑动来定义坐标,所以我们需要自己创建一个类,我创建的类名为SwipeClass对应
的代码为:
public class SwipeClass {
static Duration duration=Duration.ofSeconds(1);
public void swipeToUp(AppiumDriver driver) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
TouchAction action1=new TouchAction(driver).press(PointOption.point(width/2, height*3/4)).waitAction(WaitOptions.waitOptions(duration))
.moveTo(PointOption.point(width/2, height/4)).release();
action1.perform();
}
public void swipeToDown(AppiumDriver driver) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
TouchAction action2=new TouchAction(driver).press(PointOption.point(width/2, height/4)).waitAction(WaitOptions.waitOptions(duration))
.moveTo(PointOption.point(width/2, height*3/4)).release();
action2.perform();
}
public void swipeToLeft(AppiumDriver driver) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
TouchAction action3=new TouchAction(driver).press(PointOption.point(width*3/4, height/2)).waitAction(WaitOptions.waitOptions(duration))
.moveTo(PointOption.point(width/4,height/2)).release();
action3.perform();
}
public void swipeToRight(AppiumDriver driver) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
TouchAction action4=new TouchAction(driver).press(PointOption.point(width / 4, height / 2)).waitAction(WaitOptions.waitOptions(duration))
.moveTo(PointOption.point(width*3/4,height/2)).release();
action4.perform();
}
}
现在发现代码中会有一些错误,原因是因为我们没有导入需要的jar包。接下来我们开始导入jar包
6.jar包导入
文件--->项目结构
点击+号,选择第一个,一个第的英文从网络加载
现在我们需要3个罐包
在搜索框中输入appium,进行搜索
在搜索框中输入TestNG中进行搜索
在搜索框中输入硒进行搜索
然后点击确定。加载之后再在错误上点击ALT + ENTER将包导入
7.启动appium此时
代码准备就绪,启动appium
此处主机与上文代码中的地址保持一致,点击启动服务器1.10.0
启动成功
8.运行开始脚本
连上手机或者模拟器,运行脚本
可以点击这个按钮运行