appium快速入门(java)

一.简介:

Appium采用CS架构,客户端测试用例可采用多种语言编程,跟服务端建立一个session,服务端解析后发送指令到手机进行交互。


支持Native app(通过本地的控件访问),Web app(使用移动浏览器访问的应用)Hybrid app(本地app内嵌webview加载网页内容),通过context切换上下文。

appium类库封装了标准Selenium客户端类库,实际对手机的操作使用android的Uiautomator或IOS的Uiautomation。因此Uiautomator有的毛病appium有,Uiautomator没有的毛病appium也可能有。总之坑深而路远啊。

二.环境搭建:

JDK

SDK:配置ANDROID_HOME

node_js:(非必须,安装后可使用cmd启动appium服务端)

Appium server: node-modle的bin目录放进path

以上配置完成后,使用appium-doctor检查所需要的环境是否配置成功

客户端Java工程依赖jar包:jdk版本和selenium有不兼容的情况,我采用jdk1.7,其余版本如下。其中java-client在appium官网下载,selenium*在selenium官网下载。


三.编写测试用例

举例一个最基本的登录操作

在启动session时必须提供Desired Capabilities, Desired Capabilities本质上是以 key value 字典的方式存放,客户端将这些键值对发给服务端,告诉服务端我们想要怎么测试,可写在setup中。

teardown中断开session

用例中执行相关操作以及断言。

public class AppiumTestJunit {
	AndroidDriver driver;
	
	@Before
	public void setUp() throws Exception {

		DesiredCapabilities cap=new DesiredCapabilities();
		//设备 adb devices查看
		cap.setCapability("deviceName","127.0.0.1:62001");
		//手机系统版本
		cap.setCapability("platformVersion", "5.0");
		//测试引擎,默认Appium,API-level<17的情况下设置为selendriod
		cap.setCapability("automationName", "Appium");
		//必填,测试平台,iOS,Android,Firefox OS
		cap.setCapability("platformName", "Android");
		//apk文件路径,appium运行时会先尝试安装再开始测试,如果没有的话,会根据appActivity和appPackage去目标机器查找目标app
		//cap.setCapability("app", "C:\\Users\\Administrator\\Desktop\\apks\\vcm-release-2.6.0(6).apk");
		//安卓必填 被测应用程序的包名
		cap.setCapability("appPackage", "com.checheyun.vcm");
		//被测应用程序启动的Activity的名称
		cap.setCapability("appActivity", ".MainActivity");
		//appium服务端超过设置的时间没有收到消息时认为客户端退出,默认60
		cap.setCapability("newCommandTimeout", 60);
		//等待测试设备ready的超时时间
		cap.setCapability("devicereadyTimeout", 30);
		//是否启用支持unicode的键盘
		cap.setCapability("unicodeKeyboard", true);
		//session结束后是否重置键盘
		cap.setCapability("resetKeyboard", true);
		
		driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), cap);
		//设置全局隐式等待30S
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
	}

	@After
	public void tearDown() throws Exception {
		driver.quit();
	}

	@Test
	public void test() {
		WebElement username=driver.findElementByXPath("//android.widget.EditText[@text=\"请输入手机号\"]");
		username.sendKeys("xxxxxx");
		WebElement passwd=driver.findElementByXPath("//android.widget.ScrollView/android.view.View/android.view.View[2]/android.widget.EditText");
		passwd.sendKeys("123456");
		driver.findElementByAndroidUIAutomator("new UiSelector().description(\"login_btn\")").click();
		//driver.findElementByAccessibilityId("login_btn").click();
		WebElement me=driver.findElementByXPath("//*[contains(@content-desc,\"bottom_icon\")]/android.view.View[5]/android.widget.TextView");
		String me_cont=me.getText();
		assertTrue("mebtn not exist",me_cont.equals("我的"));
		
	}

}





  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值