appium 自动化测试之知乎Android客户端

发表于:2018-7-02 16:30

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:young    来源:博客园

  前些日子,配置好了appium测试环境.
  接下来我们研究一下测试知乎Android客户端,自行下载.
  配置目录如下:把知乎客户端命名为zhihu.apk
   
  编写基于java testng的测试用例
  由于本人是熟悉selenium webdriver,所以在Android对象识别时,采用的策略和selenium webdriver 类似
  怎么去识别APP的元素的,这里用到Android SDK  tools 目录下的工具uiautomatorviewer ,执行uiautomatorviewer.bat就可
  1.首先解析zhihu app 拿到其package 和 activity,这里使用appium gui界面,具体操作如图:
    
  2.接下来识别APP的元素,比如登陆按钮,看到resourceId,可以是雨天webdriver的find Element By.id
    
  3.至于登陆用户名和密码,在Android中都是EditText控件,可以使用By.class
     
  4.完成对象识别,最终代码如下:
    
  package com.dbyl.core;
  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.Assert;
  import org.testng.annotations.AfterMethod;
  import org.testng.annotations.BeforeMethod;
  import org.testng.annotations.Test;
  import io.appium.java_client.android.AndroidDriver;
  import java.io.File;
  import java.net.URL;
  import java.util.List;
  import java.util.concurrent.TimeUnit;
  public class zhiHu {
  private  AndroidDriver  driver;
  @BeforeMethod(alwaysRun=true)
  public void setUp() throws Exception {
  // set up appium
  File classpathRoot = new File(System.getProperty("user.dir"));
  File appDir = new File(classpathRoot, "apps");
  File app = new File(appDir, "zhihu.apk");
  DesiredCapabilities capabilities = new DesiredCapabilities();
  capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
  capabilities.setCapability("platformName", "Android");
  capabilities.setCapability("deviceName","Android Emulator");
  capabilities.setCapability("platformVersion", "4.4");
  //if no need install don't add this
  capabilities.setCapability("app", app.getAbsolutePath());
  capabilities.setCapability("appPackage", "com.zhihu.android");
  //support Chinese
  capabilities.setCapability("unicodeKeyboard" ,"True");
  capabilities.setCapability("resetKeyboard", "True");
  //no need sign
  capabilities.setCapability("noSign", "True");
  capabilities.setCapability("appActivity", ".ui.activity.GuideActivity");
  driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
  }
  @AfterMethod(alwaysRun=true)
  public void tearDown() throws Exception {
  driver.quit();
  }
  @Test(groups={"ZHTest"})
  public void Login(){
  //find login button
  WebElement loginButton = driver.findElement(By.id("com.zhihu.android:id/login"));
  loginButton.click();
  //wait for 20s
  driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
  //find login userName and password editText
  List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
  textFieldsList.get(0).sendKeys("seleniumcookies@126.com");
  textFieldsList.get(1).sendKeys("cookies123");
  driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
  //find ok button byName
  driver.findElementByName("OK").click();
  driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS);
  //find keyword 首页 and verify it is display
  Assert.assertTrue( driver.findElement(By.name("首页")).isDisplayed());
  }
  }

  5.接下来就可以debug,首先启动Android模拟器 ,启动完毕后再明明很测试,若结果如下:
    
  说明模拟器可以使用
  接下来在命令行运行apppium
  等待1-2分钟
  run as testng,就能看到自动安装,登陆知乎.
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号