appium java 测试用例_appium+java的一个测试用例

环境搭建的文章有很多,在此不再多说,我们从使用android模拟器的第一个例子开始

首先先创建一个模拟器,我创建的是版本4.4.2的,因为学习的时候搜索到的大部分都是这个版本的。

9a819f08ea6aa2be5d921102b75120dc.png

7.0版本的是本来打算测试真机的时候用的,但是真机就用不到模拟器了,只要把SDK下载好就可以了,所以这个就不用看了。

然后点击start,打开模拟器,因为打开的速度很慢,耐心的等一会。

然后我们来编写测试用例,我用的是maven+testNG,因为maven导入jar很方便,不用自己去下载jar包,只需要在pom.xml中添加

org.seleniumhq.selenium

selenium-java

LATEST

org.testng

testng

LATEST

org.seleniumhq.selenium

selenium-remote-driver

LATEST

io.appium

java-client

5.0.4

然后保存就可以了,jar包就导入进来了。

package appiumtest;

import io.appium.java_client.AppiumDriver;

import io.appium.java_client.android.AndroidDriver;

import org.openqa.selenium.By;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;

import org.testng.annotations.AfterTest;

import org.testng.annotations.BeforeTest;

import org.testng.annotations.Test;

import java.io.File;

import java.net.URL;

import java.util.List;

public class AppDemo {

private AppiumDriver driver;

@BeforeTest

public void setUp() throws Exception {

// set up appium

File classpathRoot = new File(System.getProperty("user.dir"));

System.out.println("Class是=="+classpathRoot);

File appDir = new File(classpathRoot, "apps");

System.out.println("appDir是=="+appDir);

//File app = new File(appDir, "ContactManager.apk");

DesiredCapabilities capabilities = new DesiredCapabilities();

capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

capabilities.setCapability("platformName", "Android");

capabilities.setCapability("deviceName","Android Emulator");

capabilities.setCapability("platformVersion", "4.4.2");

//capabilities.setCapability("app", app.getAbsolutePath());

capabilities.setCapability("appPackage", "com.example.android.contactmanager");

capabilities.setCapability("appActivity", ".ContactManager");

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

}

@AfterTest

public void tearDown() throws Exception {

driver.quit();

}

@Test

public void addContact(){

WebElement el = driver.findElement(By.name("Add Contact"));

el.click();

List textFieldsList = driver.findElementsByClassName("android.widget.EditText");

textFieldsList.get(0).sendKeys("Some Name");

textFieldsList.get(2).sendKeys("Some@example.com");

driver.findElementByName("Save").click();

}

}

这个测试的例子也是我找的例子,其中apk的设置是多余的,因为你只要设置了appPackage与appActivity就可以了。

然后打开Appium,可以通过cmd直接输入appium来打开,启动Appium。

ad7e0fa2e62637aab15d0145d7a9127b.png

ce77cbe874c7ce24839ee4bcb5f91a29.png

这样就是启动成功了,你就可以运行你的测试案例了。

然后我们来测试一下真机,首先先连接真机,然后在cmd中测试真机是否连接成功

f80f8a7fe1ad3dbc0493e7a225630b4c.png

获取你的测试机的ID

bc2f5c27043eb9fe75e293e4f11e7b2c.png

获取要测试的app的包名com.android.calculator2和activity的名字/com.android.calculator2.Calculator

然后打开uiautomatorviewer获取元素,主要获取resource-id

然后编写测试案例并运行

package appiumtest;

import org.testng.annotations.Test;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.AfterClass;

import io.appium.java_client.AppiumDriver;

import io.appium.java_client.android.AndroidDriver;

import java.net.URL;

import org.openqa.selenium.remote.CapabilityType;

import org.openqa.selenium.remote.DesiredCapabilities;

public class loginOccall2 {

private AppiumDriver  driver;

@BeforeClass

public void setup() throws Exception {

DesiredCapabilities cap = new DesiredCapabilities();

cap.setCapability(CapabilityType.BROWSER_NAME, "");

cap.setCapability("platformName", "Android"); //指定测试平台

cap.setCapability("deviceName", "CSX0217714007262"); //指定测试机的ID,通过adb命令`adb devices`获取

cap.setCapability("platformVersion", "7.0");

//将上面获取到的包名和Activity名设置为值

cap.setCapability("appPackage", "com.android.calculator2");

cap.setCapability("appActivity", ".Calculator");

//A new session could not be created的解决方法

cap.setCapability("appWaitActivity","com.android.calculator2.Calculator");

//每次启动时覆盖session,否则第二次后运行会报错不能新建session

cap.setCapability("sessionOverride", true);

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), cap);

}

@Test

public void plus(){

//获取1

driver.findElementById("com.android.calculator2:id/digit_1").click();

//获取+

driver.findElementById("com.android.calculator2:id/op_add").click();

//获取2

driver.findElementById("com.android.calculator2:id/digit_2").click();

//获取=

driver.findElementById("com.android.calculator2:id/eq").click();

}

@AfterClass

public void tearDown() throws Exception {

driver.quit();

}

}

我在测试中出现一个错误:Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"],弄了好半天,最后在一个文章中找到答案,已经解决。解决此问题的文章链接

修改 Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js 文件

this.shell("ps '" + name + "'", function (err, stdout) {

...

var procs = [];

var outlines = stdout.split("\n");

outlines.shift() //添加这行

...

这就是我从小白到了解appium的基本运行方式的一点记录,希望对看到我这篇有点傻瓜教程的朋友有帮助。

借鉴的文章有:

https://www.jianshu.com/p/84aa9383f8fd点击打开链接

http://blog..net/u012106209/article/details/77012141点击打开链接

再次感谢每位博主的无私奉献

struggle.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值