Appium +Java+Junit 实现QQ登录,搜索联系人发消息

一、配置:
1、打开手机开发者模式,使用USB将电脑与手机进行连接
2、打开dos窗口,查看配置信息
deviceName: 使用adb命令 adb devices
platformName: 使用Android手机就填写Android
appPackage: 使用adb命令 adb shell dumpsys activity activities
appActivity: 使用adb命令 adb shell dumpsys activity activities
注意:查看appPackage 和appActivity时,要打开QQ界面
在这里插入图片描述
二、开启Appium服务,连接真机
在这里插入图片描述
三、在Eclipse中编写代码,将测试用例和执行用例的模块分开
1、创建java project (TestAppiumQQ),在该项目中创建lib目录,将四个jar包放进去,然后build path,最终目录结构就是这样:
在这里插入图片描述
2、创建测试用例TestCase01

package com.test.qq;

import java.net.URL;
import java.util.concurrent.TimeUnit;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AndroidKeyCode;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.TouchAction;
import junit.framework.TestCase;

public class TestCase01 extends TestCase {
	AppiumDriver driver;
	DesiredCapabilities dc;
	@Before
	public void setUp(){
		//1、创建DesiredCapabilities对象
	    dc = new DesiredCapabilities();
		//2、设置属性
		dc.setCapability("deviceName", "MYQNW20507042786");
		dc.setCapability("platformName", "Android");
		dc.setCapability("appPackage", "com.tencent.mobileqq");
		dc.setCapability("appActivity", ".activity.SplashActivity");
		//设置appium可以输入中文
		dc.setCapability("unicodeKeyboard", "true");
	}
	
	@Test
	public void testSendInfo() throws Exception{
		driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), dc);
		//隐式等待
		driver.manage().timeouts().implicitlyWait(25, TimeUnit.SECONDS);
		System.out.println("开始执行啦");
		//1、点击同意协议
		driver.findElement(By.id("com.tencent.mobileqq:id/dialogRightBtn")).click();
		
		//2、点击登录按钮
		driver.findElement(By.id("com.tencent.mobileqq:id/btn_login")).click();
		
		driver.findElementByAccessibilityId("请输入QQ号码或手机或邮箱").clear();
		driver.findElementByAccessibilityId("请输入QQ号码或手机或邮箱").sendKeys("测试QQ号");
		driver.findElement(By.xpath("//android.widget.EditText[@content-desc=\"密码 安全\"]")).clear();
		driver.findElement(By.xpath("//android.widget.EditText[@content-desc=\"密码 安全\"]")).sendKeys("测试密码");
		//勾选 已阅读协议....
		driver.findElement(By.id("com.tencent.mobileqq:id/q6i")).click();
		//登录
		driver.findElement(By.id("com.tencent.mobileqq:id/login")).click();
				
		//搜索联系人
		driver.findElement(By.id("com.tencent.mobileqq:id/kag")).click();
		driver.findElement(By.id("com.tencent.mobileqq:id/et_search_keyword")).sendKeys("刘五杠");
		Thread.sleep(1000);
		driver.sendKeyEvent(AndroidKeyCode.ENTER);
		Thread.sleep(5000);
		TouchAction action  = new TouchAction(driver);
     	action.press(500, 450).release().perform();
     	Thread.sleep(2000);
     	
     	//发送消息
    	driver.findElement(By.id("com.tencent.mobileqq:id/input")).sendKeys("我是你的IT女友");
     	driver.findElement(By.id("com.tencent.mobileqq:id/fun_btn")).click();		
	}
	
	@After
	public void tearDown(){
		//关闭浏览器
		driver.closeApp();
	}
}
	3、创建执行测试的模块TestRunner
package com.test.qq;

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Result result = JUnitCore.runClasses(TestCase01.class);
		for(Failure failure:result.getFailures()){
			System.out.println(failure.toString());
		}
		System.out.println(result.wasSuccessful());
	}
}
	4、结果:
        开始执行啦
		true

记录一下我的移动端学习成果,欢迎大家一起探讨改进。


版权声明:本文为m0_51274044原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。