在上篇文章中记录了各方面环境的问题,这次与上次不同的就是这次是用夜神模拟器来指定联系人打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(){
dc = new DesiredCapabilities();
dc.setCapability("deviceName", "127.0.0.1:62001");
dc.setCapability("platformName", "Android");
dc.setCapability("appPackage", "com.tencent.mobileqq");
dc.setCapability("appActivity", ".activity.SplashActivity");
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("开始执行啦");
driver.findElement(By.id("com.tencent.mobileqq:id/dialogRightBtn")).click();
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/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();
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) {
Result result = JUnitCore.runClasses(TestCase.class);
for(Failure failure:result.getFailures()){
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
最终执行结果: 在控制台: 在模拟器: 通话成功,没有手机也能打QQ电话啦。
|