栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Appium+Eclipse+夜神模拟器 实现QQ打电话功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Appium+Eclipse+夜神模拟器 实现QQ打电话功能

在上篇文章中记录了各方面环境的问题,这次与上次不同的就是这次是用夜神模拟器来指定联系人打QQ电话
一、夜神模拟器配置:
在夜神模拟器上下载一个QQ,在QQ官网上就有,可自行下载。
二、打开Appium服务器、打开夜神模拟器,打开dos窗口



三、在dos窗口中连接夜神模拟器:
如果经常连接,那么打开模拟器,在dos窗口使用adb devices命令就能搜索到,不然就话,就要切换到夜神安装目录下,使用命令连接:
三、在eclipse工具上编写代码
在测试用例模中:

package com.testQQTel;

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.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AndroidKeyCode;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileBy.ByAndroidUIAutomator;
import io.appium.java_client.TouchAction;

public class TestCase {
	DesiredCapabilities dc;
	AppiumDriver driver;
	@Before
	public void setUp(){
		//1、创建DesiredCapabilities对象
	    dc = new DesiredCapabilities();
		//2、设置属性
//		dc.setCapability("deviceName", "MYQNW20507042786");
	    dc.setCapability("deviceName", "127.0.0.1:62001");
		dc.setCapability("platformName", "Android");
		dc.setCapability("appPackage", "com.tencent.mobileqq");
		dc.setCapability("appActivity", ".activity.SplashActivity");
		//设置appium可以输入中文
		dc.setCapability("unicodeKeyboard", "true");
	}
	
	@Test
	public void testQQTel() throws Exception{
		driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), dc);
		//隐式等待
		driver.manage().timeouts().implicitlyWait(15, 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("QQ登录密码");
	
		//勾选 已阅读协议....
		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(5000);
		//点击搜索到的结果
		TouchAction action  = new TouchAction(driver);
     	action.press(500, 300).release().perform();
     	Thread.sleep(3000);

        // 打电话之前,发送消息    	
        driver.findElement(By.id("com.tencent.mobileqq:id/input")).sendKeys("姐姐要打电话啦");   	driver.findElement(By.id("com.tencent.mobileqq:id/fun_btn")).click();
     	Thread.sleep(2000);
       //点击 + 号
     	driver.findElement(By.id("com.tencent.mobileqq:id/gny")).click(); 
     	System.out.println("快要打电话啦");    	
     	Thread.sleep(2000);
       //点击电话按钮
     	driver.findElement(By.id("com.tencent.mobileqq:id/dcf")).click();
       //提醒授权,两项都允许
     	driver.findElement(By.id("com.android.packageinstaller:id/permission_allow_button")).click();
     	driver.findElement(By.id("com.android.packageinstaller:id/permission_allow_button")).click();
       //发送萌萌表情
       //driver.findElement(By.id("com.tencent.mobileqq:id/gnb")).click();
       //Thread.sleep(2000);
       //driver.findElementByAccessibilityId("卖萌").click();
       //driver.findElement(By.id("com.tencent.mobileqq:id/fun_btn")).click();  
       System.out.println("等待结束");	
}
	
	@After
	public void tearDown(){
		driver.quit();
	}
}

在执行测试用例的main方法中:

package com.testQQTel;

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(TestCase.class);
		for(Failure failure:result.getFailures()){
			System.out.println(failure.toString());
		}
		System.out.println(result.wasSuccessful());
	}

}

最终执行结果:
在控制台:

在模拟器:


通话成功,没有手机也能打QQ电话啦。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/775605.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号