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

appium是一个开源框架,相对来说还不算很稳定。转载请注明出处!!!!

前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html

接下来我们研究一下测试知乎Android客户端。自行下载

配置目录如下:把知乎客户端命名为zhihu.apk

编写基于java testng的测试用例:

由于本人是熟悉selenium webdriver,所以在Android对象识别时,采用的策略和selenium webdriver 类似

怎么去识别APP的元素的,这里用到Android SDK  tools 目录下的工具uiautomatorviewer ,执行uiautomatorviewer.bat就可

  • 首先解析zhihu app 拿到其package 和 activity,这里使用appium gui界面,具体操作如图:

  • 接下来识别APP的元素,比如登陆按钮,看到resourceId,可以是雨天webdriver的find Element By.id

至于登陆用户名和密码,在Android中都是EditText控件,可以使用By.class



完成对象识别,最终代码如下:

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("[email protected]");
        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());

    }
}


接下来就可以debug,首先启动Android模拟器 ,启动完毕后再明明很测试,若结果如下:

说明模拟器可以使用

接下来在命令行运行apppium

等待1-2分钟

run as testng,就能看到自动安装,登陆知乎

PASSED: Login

===============================================
Default test
Tests run: 1, Failures: 0, Skips: 0
===============================================

===============================================
Default suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

[TestNG] Time taken by [email protected]: 1938 ms
[TestNG] Time taken by [email protected]: 121 ms
[TestNG] Time taken by [FailedReporter passed=0 failed=0 skipped=0]: 0 ms
[TestNG] Time taken by [email protected]: 423 ms
[TestNG] Time taken by [email protected]: 1669 ms
[TestNG] Time taken by [email protected]: 240 ms

时间: 2024-12-17 16:49:14

appium 自动化测试之知乎Android客户端的相关文章

Windows下Python3+nose+appium自动化测试之Android实战篇

简介 以下用来做自动化测试的这款app叫最爱抓娃娃,以后会改名为网易抓娃娃. 下文提到的appiumier项目里会包含用来测试的apk包以及自动化测试代码. 先说一个坑 随着Android机高度定制的大潮,有些手机是这样的,比如Vivo x9s,你在做测试调试的过程中最终会发现跳转到某些页面后driver却进不去这个页面,page_souce也没法打印,所以什么元素你都获取不到.唯一的解决办法就是换个手机.后来我换了一个中兴手机,问题消失了. 准备工作 这里我列举下在Windows下用pytho

实现类知乎android客户端关注和取消关注的按钮点击效果

先说明一下,项目代码已上传至github,不想看长篇大论的也可以先去下代码,对照代码,哪里不懂点哪里. 代码在这https://github.com/zgzczzw/ZHFollowButton 前几天发现知乎关注的点击效果确实赞,查了一下实现方式,刚好看到这个问题,花了一天时间终于把这个效果实现了,现在来回答一下,很不幸,楼上各位的答案都不全对,且听我一一道来. 首先,我先详细观察了一些知乎的效果,其中有一个很神奇的地方,如图: 注意看第二张图,这个圆形在扩散的时候,圆形底下的字还在,而且新的

20150907自动化测试之Appinum For Android(前篇)

测试菜鸟在无人指导的情况下开始进行自动化测试的学习啦.... 俗话说得好,说一千遍不如做一遍,在简单地百度之后,开始按照网上教程部署appium自动化测试环境 尝试一:Windows_x64 (1)node.js (2)Android SDK (3)Apache Ant (4)JDK (5)Maven (6)Appium (7)Eclipse 在安装过程中并未出现问题,但由于对appium的完全不了解,导致安装完成后无法开始测试 .........................

(C#)Appium自动化测试之卸载\重装APP

1.先获取session,实例化driver 2.自动安装APP //安装driver.InstallApp("APP的路径"); //判断是否安装完成,返回true\false bool isInstalled = driver.IsAppInstalled("app包名"); 3.重启APP //重装过后要唤起APP driver.ResetApp(); 4.卸载 driver.RemoveApp("APP包名"); 5.关闭APP //关闭

开启iOS自动化测试之门

开启iOS appium自动化测试之门 Appium介绍 Appium是一个开源.跨平台的测试框架,可以用来测试原生及混合的移动端应用.Appium支持iOS.Android及FirefoxOS平台.Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库.Android系统的UIAutomator框架.Appium对iOS系统的支持得益于Dan Cuellar’s对于iOS自动化的研究.Appium也集成了Selendroid,来支持老and

android客户端应用(native app)适配测试自动化 东海陈光剑 2014年5月5日 0:39:04

未命名 android客户端应用(native app)适配测试自动化 东海陈光剑 2014年5月5日 0:39:04 http://10.125.1.58:88/report.html?run_stamp=20140428054354&min=3&sec=214 <!doctype html><html><head>    <meta charset="UTF-8">    <title>适配测试报告<

[转] Android自动化测试之使用java调用monkeyrunner(五)

Android自动化测试之使用java调用monkeyrunner 众所周知,一般情况下我们使用android中的monkeyrunner进行自动化测试时,使用的是python语言来写测试脚本.不过,最近发现可以用java调用monkeyrunner Api,用java语言写测试脚本. 于是,就简单研究了一下.这里做一些总结.希望有对在研究的午饭可以有所用处. 开始时,搜素到一些零碎的教程,说使用java调用monkeyrunner时,需要导入android sdk  tools路径下的lib里

Android自动化测试之环境搭建

Android自动化测试之环境搭建 一.Android-sdk介绍? SDK(Software development kit)软件开发工具包.被软件开发工程师用于为特定的软件包.软件框架.硬件平台.操作系统等建立应用软件的开发工具的集合.Android是google公司推出的手机开发平台.Android-sdk就是指Android专属的软件开发工具包. Android-sdk中我们最常用的就是tools和Platformtools文件夹中的工具. 二.工具安装? 1.android-sdk只需

Android自动化测试之UIAutomator(三)---比对测试截图

系列回顾:本系列主要从开发的角度介绍UiAutomator的使用,总共包括三篇: 基础入门: Android自动化测试之UiAutomator(一) 技巧篇:     Android自动化测试之UiAutomator(二)(未完成) 比较工具篇 :Android自动化测试之UiAutomator(三)---比对测试截图 本文是第三篇. 转载请注明出处:http://blog.csdn.net/xzy2046/ 以下是正文: 1.简介: 本文适合所有以图片作为输出的自动化开发工具(不仅限于Andr