51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1993|回复: 3
打印 上一主题 下一主题

Appium自动化测试Android

[复制链接]
  • TA的每日心情
    郁闷
    2022-8-29 14:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-2-23 15:44:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Appium自动化测试Android
    Appium相关环境配置
    配置jdk和Android SDK
    配置nodejs
    安装配置appium
    Appium测试Demojava推荐使用PythonJava的配置相当复杂但是Java可供操作的选项多一点一般情况下
    Python足够使用了后面会补Python
    首先需要创建一个Java Project这里我用eclipse来作为我的IDE
    然后新建两个文件夹apps和lib这里名字可以随便取只是约定俗成后大家都这么写如下图


    将需要测试的apk文件添加进apps文件夹和需要用到的jar包添加进lib文件夹
    新建一个Java文件并编写测试代码
    Appium测试DemoPython27的版本也可以我这里使用的35
    首先下载appium的依赖包
    编写自己的测试代码
    开启Appium并执行脚本语句
    TIPS
    Appium相关环境配置

    SETUP(官方给的配置步骤,其中有些可以省略)
    1. Install node.js (v.0.12 or greater). Use the installer from nodejs.org.
    2. Install appium-doctor in order to check your system: npm install appium-doctor -g. Then run by
    typing appium-doctor.
    3. Install the Android SDK. You will need to run the ‘android’ tool (included in the SDK, in the tools
    folder) and make sure you have an API Level 17 or greater API installed. Set ANDROID_HOME to be
    your Android SDK path and add the tools and platform-tools folders to your PATH variable.
    4. Install the Java JDK and set JAVA_HOME to your JDK’s bin folder.
    5. Install Apache Ant or use the one that comes with the Android Windows SDK in the eclipse\plugins
    folder. Be sure to add the folder containing Ant to your PATH variable.


    6. Install Apache Maven and set the M2HOME and M2 environment variables. Set M2HOME to the
    directory maven is installed in, and set M2 to %M2HOME%\bin. Add the path you used for M2 to
    your PATH.
    7. Install Git Be sure to install Git for windows to run in the regular command prompt.
    8. Install cURL.
    Now that you’ve downloaded everything, if you’re running from source, run the following in the
    folder where you cloned appium:
    rm -rf node_modules
    npm install

    配置jdk和Android SDK

    如果在你的机器上开发过Android项目那么这里就不需要配置jdk和Android SDK了。需要检查你的环
    境变量,需要有JAVA_HOME和ANDROID_HOME,并且将这两个添加进path里面。

    点击上图中的Path,然后点击编辑。然后添加,如下图

    如果你在电脑上面没有安装过jdk和Android SDK,那么你需要先安装这两个东西。JDK下载,Android
    SDK下载

    note:检查是否安装好,在DOS窗口里面输入javac -version和java -version查看版本号,如果不报错
    则说明环境变量配置好了。这里的Android SDK的环境变量以防万一,可以加上,如上图中的ANDROID
    _SDK,里面的路径分别为C:\Android\sdk\platforms;C:\Android\sdk\tools;C:\Android\sdk\platform-tools,
    并将ANDROID_SDK添加进Path里面。



    配置nodejs

    如果你装过nodejs那么这里需要检查你的nodejs和npm的版本和环境变量是否配好,如果没装过,则先
    下载安装,然后配置环境变量,在安装的时候可以勾选自动配置环境变量。nodejs下载地址
    配置好后如下图

    note:检查是否配置好,在DOS窗口里面分别输入node -v和npm -v查看对应的版本号,如果不报错则表示
    环境变量配置好了。

    安装配置appium

    这里有多种安装appium的方式一种是,在你的nodejs环境变量配置好后,打开DOS窗口,输入npm install
    –g appium,这种方法我多次使用多次失败。所以我选择第二种,去appium的官网下载安装。appium下载,
    appium官网(dmg后缀是mac机器对应的安装文件,Zip是windowns对应的安装文件)

    note: 安装完appium后,我们可以查看我们以上所有的环境变量是否都配置正确了。在DOS窗口下输入
    appium-doctor查看所有的环境是否配置好(这里需要使用命令npm install -g appium-doctor,或者直接从源
    码位置打开)。

    在DOS窗口下输入appium可以打开appium,如果打不开提示需要.Net Frameworkn框架的话,就去下载对
    应的框架安装然后再尝试打开appium。

    Appium测试Demo(java,推荐使用Python,Java的配置相当复杂,但是Java可供操作的选项多一点,一般
    情况下Python足够使用了,后面会补Python)

    source code

    首先需要创建一个Java Project,这里我用eclipse来作为我的IDE。





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-8-29 14:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2018-2-23 15:49:31 | 只看该作者

    然后新建两个文件夹apps和lib,(这里名字可以随便取,只是约定俗成后大家都这么写),如下图

    我这里之所以有Referenced Libraries是因为我的lib下的jar包已经添加进引用了。新建的项目应该是
    没有的。

    将需要测试的apk文件添加进apps文件夹,和需要用到的jar包添加进lib文件夹。

    我这里提供两个apk,一个是官方提供的,一个是我自己写的。
    jar包则需要去官网下,这里的类库分为两种一种是Selenum2类库(需要其他版本则进这里),


    另一种是 Appium类库



    下载完成后,将所有的jar包添加进我们的lib文件夹,并全部引用(添加进编译路径)。
    note:注意的是selenum下载下来的压缩包,需要解压后,(需要注意的是,解压后应该是有一个jar文
    件和一个lib文件夹,jar文件和lib里面的所有jar包都添加进工程的lib文件夹,这里用到的jar包需要是同
    一压缩包下面的,不然版本号不匹配会报错);添加编译路径是可以选中所有的jar包然后一起右键添
    加的(右键-->Build Path-->Add to Build Path)。


    新建一个Java文件,并编写测试代码

    新建一个Java class,名字自己写,Java里面的代码如下,

    1. package com.hust.damnicomniplus;

    2. import java.io.File;
    3. import java.net.URL;
    4. import java.util.List;

    5. import org.junit.After;
    6. import org.junit.Before;
    7. import org.junit.Test;
    8. import org.openqa.selenium.By;
    9. import org.openqa.selenium.WebElement;
    10. import org.openqa.selenium.ie.InternetExplorerDriver;
    11. import org.openqa.selenium.remote.CapabilityType;
    12. import org.openqa.selenium.remote.DesiredCapabilities;

    13. import io.appium.java_client.android.AndroidDriver;

    14. public class AppiumTest {
    15.     private AndroidDriver driver;
    16.     @Before
    17.     public void setUp() throws Exception {
    18.         //设置apk的路径
    19.         File classpathRoot = new File(System.getProperty("user.dir"));
    20.         File appDir = new File(classpathRoot, "apps");
    21.         File app = new File(appDir, "ContactManager.apk");

    22.         //设置自动化相关参数
    23.         DesiredCapabilities capabilities = new DesiredCapabilities();
    24.         capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
    25.         capabilities.setCapability("platformName", "Android");
    26.         capabilities.setCapability("deviceName", "Android Emulator");

    27.         //设置安卓系统版本
    28.         capabilities.setCapability("platformVersion", "4.4.2");
    29.         //设置apk路径
    30.         capabilities.setCapability("app", app.getAbsolutePath());

    31.         //设置可支持编码,可直接输入中文
    32.         capabilities.setCapability("unicodeKeyboard", true);
    33.         capabilities.setCapability("resetKeyboard", true);
    34.         //设置网络选项,可选项
    35.         capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
    36.         //设置app的主包名和主类名
    37.         capabilities.setCapability("appPackage", "com.example.android.contactmanager");
    38.         capabilities.setCapability("appActivity", ".ContactManager");

    39.         //初始化
    40.         driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);   
    41.     }

    42.     @Test
    43.     public void addContact(){
    44.         WebElement el = driver.findElement(By.name("Add Contact"));
    45.         el.click();
    46.         List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
    47.         textFieldsList.get(0).sendKeys("袁大毛");
    48.         textFieldsList.get(1).sendKeys("15648971455");
    49.         textFieldsList.get(2).sendKeys("kjgierhgi@jhig.com");
    50.         driver.swipe(100, 500, 100, 100, 2);
    51.         driver.findElementByName("Save").click();
    52.     }   

    53.     @After
    54.     public void tearDown() throws Exception {
    55.         driver.quit();
    56.     }
    57. }
    复制代码
    运行项目之前需要先打开appium,这里在DOS窗口下输入appium或者直接在开始菜单里面运行appium,
    如果只有一台设备这里直接运行就行,如果有多台设备则需要自己选中一台后运行(在Android logo
    里面选定)。(右上角的运行按钮)

    之后运行项目,右键–>Run as Junit Test就行了。


    note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet 选项
    –>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。这里不需要提前将
    测试的apk文件安装到手机。

    测试项目源码地址

    Appium测试Demo(Python,2.7的版本也可以,我这里使用的3.5)

    首先下载appium的依赖包

    Dos窗口输入pip install appium-python-client,这个命令会下载四个依赖,分别是appium与Python交互配
    置的文件Appium_Python_Client-0.24-py3.5.egg-info、Python与appium通信的appium、真正参与测试
    的selenium、selenium的说明配置文件selenium-3.4.1.dist-info


    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2022-8-29 14:43
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2018-2-23 15:52:16 | 只看该作者
    编写自己的测试代码

    我这里代码如下
    1. #!/usr/bin/env python3
    2. # -*- coding: utf-8 -*-
    3. from appium import webdriver

    4. capabilities = {}
    5. # 测试平台,与测试设备名字,由于这里是真机,所以设备名字不生效
    6. capabilities['platformName'] = 'Android'
    7. capabilities['deviceName'] = 'Android Emulator'
    8. # 安卓测试版本,真机这里也不生效
    9. capabilities['platformVersion'] = '4.4.2'
    10. # 设置支持的编码,这样设置后可以输入中文
    11. capabilities['unicodeKeyboard'] = 'True'
    12. capabilities['resetKeyboard'] = 'True'
    13. # 设置APP的主包名和入口类
    14. capabilities['appPackage'] = 'com.example.android.contactmanager'
    15. capabilities['appActivity'] = '.ContactManager'
    16. # 初始化
    17. driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', capabilities)

    18. add = driver.find_element_by_name('Add Contact')
    19. add.click()
    20. textFieldsList = driver.find_elements_by_class_name('android.widget.EditText')
    21. textFieldsList[0].send_keys('袁大毛')
    22. textFieldsList[1].send_keys('15684457157')
    23. textFieldsList[2].send_keys('keingha@jig.com')
    24. driver.swipe(100, 500, 100, 100, 2)
    25. # driver.find_element_by_name('Save').click()
    26. driver.quit()
    复制代码
    开启Appium,并执行脚本语句

    开启和上面Java一样,在DOS窗口直接输入appium后回车,或者在开始菜单里面找到appium打开,
    ,如果打不开提示需要.Net Frameworkn框架的话,就去下载对应的框架安装然后再尝试打开appium。
    如果只有一台设备这里直接运行就行,如果有多台设备则需要自己选中一台后运行(在Android logo
    里面选定)。(右上角的运行按钮)

    然后运行Python脚本就行了。
    note:运行时如果报错,则显示为http连接等异常,则打开intent explorer–>设置按钮–>Internet
    选项–>安全–>重置到默认(大概是这个意思)。然后重新打开appium,重新运行项目。需要提前
    将测试的apk文件安装到手机。

    TIPS

    这里测试的apk不一定是正式签名过得,debug版本的也行。
    如果想测试其它非自己开发的apk,则可以借助Android SDK里面的uiautomatorviewer.bat工具。
    路径为SDK下面的tools文件夹下。
    想学习更详细的appium测试,可以进testerhome
    appium官方也提供了相当多的文档

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-10 21:33 , Processed in 0.072100 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表