精华内容
下载资源
问答
  • Appium自动化测试

    2019-05-09 20:40:48
    Appium自动化测试 一、为什么要自动化测试: 用户对软件体验要求的不断提升,影响软件开发组织对app质量要求越来越高。重复性工作能不能自动化呢?或者要求部分工作自动化? App开发是一个迭代的过程,自动化测试...

    Appium自动化测试

    一、为什么要自动化测试

    用户对软件体验要求的不断提升,影响软件开发组织对app质量要求越来越高。重复性工作能不能自动化呢?或者要求部分工作自动化?
    App开发是一个迭代的过程,自动化测试可以辅助进行回归测试。

    什么是回归测试?Regression Testing

    回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
    自动回归测试将大幅降低系统测试、维护升级等阶段的成本。

    二、app运行的操作系统

    1、android:

    Android是一种基于Linux的自由及开放源代码的操作系统。主要使用于移动设备,如智能手机和平板电脑,由Google(谷歌)公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机、智能手表等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。 [1] 2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
    2、ios:
    iOS是由苹果公司开发的移动操作系统 [1] 。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等产品上。iOS与苹果的Mac OS X操作系统一样,属于类Unix的商业操作系统。原本这个系统名为iPhone OS,因为iPad,iPhone,iPod touch都使用iPhone OS,所以2010WWDC大会上宣布改名为iOS(iOS为美国Cisco公司网络设备操作系统注册商标,苹果改名已获得Cisco公司授权)。

    三、appium简介:

    Appium is an open source test automation framework for use with native and hybrid mobile apps. It drives iOS, Android, and Windows apps using the WebDriver protocol.
    Appium是一款开源测试框架,可用于原生或混合app的测试。利用WebDriver协议可支持IOS、Android、Window手机应用的测试。

    官网:http://appium.io/
    Appium支持的测试脚本语言:Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。

    四、appium工作原理

    在这里插入图片描述
    1、框架架构:

    电脑(client)上运行自动化测试脚本,调用的是webdriver的接口,appium server接收到我们client上发送过来的命令后他会将这些命令转换为UIautomator认识的命令,然后由UIautomator来在设备上执行自动化。Appium的架构原理如上图所示,由客户端(Appium Client)和服务器(Appium Server)两部分组成,客户端与服务器端通过JSON Wire Protocol进行通信。
    2、三种角色:
    (1)appium客户端:
    它主要是指实现了Appium功能的WebDriver协议的客户端Library,它负责与Appium服务器建立连接,并将测试脚本的指令发送到Appium服务器。现有的客户端Library有多种语言的实现,包括Ruby、Python、Java、JavaScript(Node.js)、Object C、PHP和C#。Appium的测试是在这些Library的基础上进行开发的。
    (2)appium服务器:
    Appium服务器是Appium框架的核心。它是一个基于Node.js实现的HTTP服务器。Appium服务器的主要功能是接受从Appium客户端发起的连接,监听从客户端发送来的命令,将命令发送给bootstrap.jar(iOS手机为bootstrap.js)执行,并将命令的执行结果通过HTTP应答反馈给Appium客户端。
    (3)bootstrap.jar:
    Bootstrap.jar是在Android手机上运行的一个应用程序,它在手机上扮演TCP服务器的角色。当Appium服务器需要运行命令时,Appium服务器会与Bootstrap.jar建立TCP通信,并把命令发送给Bootstrap.jar;Bootstrap.jar负责运行测试命令。

    五、环境搭建

    1、安装jdk8
    2、安装androidSDK:
    (1)下载地址:
    官网下载:https://android-sdk.en.softonic.com/download
    网盘下载: http://tools.android-studio.org/index.php/sdk
    (2)打开SDK Manager.exe(D:\androidSDK)下载相关的文件:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    注:完成后先关闭再打开

    (3)安装目录解释:
    在这里插入图片描述

    add-ons
    这里面保存着附加库,第三方公司为android 平台开发的附加功能系统。比如GoogleMaps,当然你如果安装了OphoneSDK,这里也会有一些类库在里面。
    docs
    这里面是Android SDKAPI参考文档,所有的API都可以在这里查到。
    extras
    该文件夹下存放了Android support v4,v7,v13,v17包; 还有google提供额USB驱动、Intel提供的硬件加速等附加工具包, 和market_licensing作为AndroidMarket版权保护组件,一般发布付费应用到电子市场可以用它来反盗版。
    platforms
    是每个平台的SDK真正的文件,存放了不同版本的android系统。里面会根据APILevel划分的SDK版本。
    samples
    是Android SDK自带的默认示例工程,里面的apidemos强烈推荐初学者运行学 习,对于SQLite数据库操作可以查看NotePad这个例子,对于游戏开发Snake、LunarLander都是不错的例子,对于Android主 题开发Home则是androidm5时代的主题设计原理。
    (4)环境变量设置:
    在这里插入图片描述

    Path:

    %ANDROID_HOME%\platform-tools;
    %ANDROID_HOME%\tools;
    %ANDROID_HOME%\build-tools\28.0.3;

    (5)测试是否安装成功:

    输入adb命令,执行如下:
    在这里插入图片描述

    输入aapt,执行如下:
    在这里插入图片描述

    3、android模拟器的安装及使用:
    (1)夜神模拟器:https://www.yeshen.com/
    当前版本:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    设置手机版:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    启动完成后的界面:
    在这里插入图片描述

    查看android版本
    在这里插入图片描述

    多开模拟器:
    启动2个模拟器!
    在这里插入图片描述

    开启VT:如何开启自己去百度
    Cpu虚拟化技术,可通过工具检测。 VT检测工具.exe
    在这里插入图片描述

    Cpu及内存消耗情况:

    在这里插入图片描述
    (2)逍遥安卓模拟器:http://www.xyaz.cn/
    在这里插入图片描述

    4、adb命令操作:

    adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。
    Tips: 在 android_sdk/platform-tools/ 中找到 adb 工具,然后根据其具体的路径配置好环境变量。然后启动cmd 输入‘adb’即可查看是否配置成功。

    (1)开启adb模式:
    在这里插入图片描述

    在模拟器中连续点击7次版本号就会出现以上提示。
    (2)打开usb调试模式

    在设置 开发者选项中
    在这里插入图片描述

    (3)adb常用命令:

    adb version
    查看版本号
    在这里插入图片描述

    连接夜神模拟器
    adb connect 127.0.0.1:62001
    在这里插入图片描述

    查看设备信息
    adb devices
    在这里插入图片描述

    多开模式下

    记得设置开发者模式和usb调试模式:
    出现查不到另一个设备问题: 再一次连接最先连上的设备,如下图
    在这里插入图片描述
    问题
    在这里插入图片描述
    adb –s 127.0.0.1:62001 shell
    在这里插入图片描述

    展开全文
  • appium自动化测试

    2019-09-17 16:02:53
    本课程主要讲解自动化测试工具appium。 下面以android app测试为例,讲解appium的基本使用方法 appium概念 appium安装配置 一个测试样例 Appium 概念 Appium是一个移动端的自动化框架,可用于测试原生应用,...

    本课程主要讲解自动化测试工具appium。

    下面以android app测试为例,讲解appium的基本使用方法

    appium概念

    appium安装配置

    一个测试样例

    Appium 概念

    Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。

    Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UIAutomator框架。

    原生的应用是指用android或ios的sdk编写的应用。原生应用程序看起来(外观)和运行起来(性能)是最佳的。

    移动网页应用是指网页应用,HTML5应用程序使用标准的Web技术,通常是HTML5、JavaScript和CSS。

    混合应用程序让开发人员可以把HTML5应用程序嵌入到一个细薄的原生容器里面,集原生应用程序和HTML5应用程序的优点(及缺点)于一体。

    appium选择了client-server的设计模式。

    image

    通过上面一张图简单展示了appium的工具原理。

    客户端/服务器架构
    Appium 的核心是暴露 REST API 的网络服务器。它接受来自客户端的连接,监听命令并在移动设备上执行,答复表示执行结果的 HTTP 响应。客户端/服务器架构实际给予了许多可能性:我们可以使用任何有 http 客户端 API 的语言编写我们的测试代码,不过选一个Appium 客户端程序库 使用更容易。我们可以把服务器放在另一台机器上,而不是执行测试的机器。

    会话(session)
    自动化始终在一个会话的上下文中执行,这些客户端程序库以各自的方式发起与服务器的会话,但都以发给服务器一个 POST /session 请求结束,请求中包含一个被称作 'desired capabilities' 的 JSON 对象。这时服务器就会开启这个自动化会话,并返回一个用于发送后续命令的会话 ID。

    Desired Capabilities
    Desired capabilities 是一些发送给 Appium 服务器的键值对集合 (比如 map 或 hash),告诉服务器我们想要启动什么类型的自动化会话。也有各种可以在自动化运行时修改服务器行为的 capabilities。例如,我们可以把 platformName capability 设置为 iOS,告诉 Appium 我们想要 iOS 会话,而不是 Android 或者 Windows 会话。我们也可以设置 safariAllowPopups capability 为 true ,确保我们在 Safari 自动化会话中可以使用 javascript 打开新窗口。有关 Appium capabilities 的完整列表,请参阅 capabilities doc 。

    Appium 服务器
    Appium 是用 Node.js 写的服务器。它可以从源码构建安装或者从 NPM 直接安装:

    $ npm install -g appium
    $ appium
    

    Appium 客户端
    有多个客户端程序库(Java、Ruby、Python、PHP,、JavaScript 和 C# 的)支持 Appium 对 WebDriver 协议的扩展,你需要用这些客户端程序库代替通常的 WebDriver 客户端。在这里浏览所有程序库的列表。

    Appium.app, Appium.exe
    有 Appium 服务器的图形界面包装器可以下载。它们打包了 Appium 服务器运行需要的所有东西,所以你不需要为 Node 而烦恼。它们还提供一个 Inspector 使你可以查看你应用的层级结构,这在写测试时很方便。

    appium安装配置

    Appium-desktop安装

    原来版本的appium-server不再维护,新的工具 是Appium-desktop。

    官网地址:http://appium.io/,下载合适的版本

    windows平台下载:appium-desktop-setup-1.4.0.exe

    双击进行安装,安装过程不需要任何设置

    安装完成桌面会生成一个紫色的appium 图标,双击打开。

    默认显示监控的 host 和 port ,这和 Appium-Server中是一致的。点击 “Start Server V 1.7.2” 按钮启动服务。

    注意:不能在浏览器中设置代理
    Traceback (most recent call last):
      File "C:\Users\liujiey\Desktop\test.py", line 20, in setUp
    
    self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
      File "build\bdist.win32\egg\appium\webdriver\webdriver.py", line 36, in __init__
    
    super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 87, in __init__
    
    self.start_session(desired_capabilities, browser_profile)
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 141, in start_session
    
    'desiredCapabilities': desired_capabilities,
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 199, in execute
    
    response = self.command_executor.execute(driver_command, params)
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 395, in execute
    
    return self._request(command_info[0], url, body=data)
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\remote_connection.py", line 463, in _request
    
    resp = opener.open(request, timeout=self._timeout)
    
      File "C:\Python27\lib\urllib2.py", line 394, in open
    
    response = self._open(req, data)
    
      File "C:\Python27\lib\urllib2.py", line 412, in _open
    
    '_open', req)
    
      File "C:\Python27\lib\urllib2.py", line 372, in _call_chain
    
    result = func(*args)
    
      File "C:\Python27\lib\urllib2.py", line 1199, in http_open
    
    return self.do_open(httplib.HTTPConnection, req)
    
      File "C:\Python27\lib\urllib2.py", line 1170, in do_open
    
    r = h.getresponse(buffering=True)
      File "C:\Python27\lib\httplib.py", line 1027, in getresponse
    
    response.begin()
    
      File "C:\Python27\lib\httplib.py", line 407, in begin
    
    version, status, reason = self._read_status()
    
      File "C:\Python27\lib\httplib.py", line 371, in _read_status
    
    raise BadStatusLine(line)
    
    BadStatusLine: ''
    

    安装 python-client


    python-client 的项目名称叫:Appium-Python-Client。

    安装方式:pip install Appium-Python-Client

    该项目依赖selenium

    在python中测试: from appium import webdriver,导入成功说明安装完成

    如果使用其他语言,则安装其他语言的client

    安装 JDK

    app sdk的运行需要JDK的支持,因此需要先安装JDK

    需要配置JAVA_HOME,并设置path路径

    安装 Android SDK

    进行模拟器测试时,需要SDK的支持。如果真机测试的话,会用到platform-tool,例如adb等工具。因此建议安装SDK。

    Android SDK 下载地址:

    http://tools.android-studio.org/index.php/sdk

    选择对应平台版本下载,这里选择:

    installer_r24.4.1-windows.exe

    安装SDK:

    1、双击进行安装

    2、安装过程中会检查JDK

    3、安装完毕后会提示运行SDK manager

    4、除默认勾选的之外,选择需要下载支持的版本,例如Android 7.0,Android 6.0等,这里选择Android 4.2.2进行下载

    设置环境变量:

    下面设置环境变量:

    “我的电脑” 右键菜单 —> 属性 —> 高级 —> 环境变量 —> 系统变量 —> 新建…

    变量名 变量值
    ANDROID_HOME D:\android\Android\sdk

    找到 path 变量名—> “编辑” 添加:

    变量名 变量值
    PATH ;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;

    创建模拟器:

    1、双击 AVD Manage.exe 启动AVD管理器。

    2、点击 “Create…” 按钮,创建Android虚拟机。

    3、不要选择超过电脑屏幕分辨率的Device。Target选择SDK下载的版本,Skin选择no skin即可,点击 “OK” 创建完成。

    4、在 AVD Manage 工具中选中创建的Android虚拟机,点击 “Start…” 按钮启动。

    使用Intel atom模拟时,可能会出现
    
    Starting emulator for AVD 'EMU'
    emulator: ERROR: x86 emulation currently requires hardware acceleration!
    Please ensure Intel HAXM is properly installed and usable.
    CPU acceleration status: HAXM is not installed on this machine
    
    此时可以在sdk manager下载extra中的HAXM或者https://software.intel.com/en-us/articles/intel-hardware-accelerated-execution-manager-intel-haxm下载并安装
    
    
    异常:未安装sdk
    Traceback (most recent call last):
      File "C:\Users\liujiey\Desktop\test.py", line 20, in setUp
    
    self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
      File "build\bdist.win32\egg\appium\webdriver\webdriver.py", line 36, in __init__
    
    super(WebDriver, self).__init__(command_executor, desired_capabilities, browser_profile, proxy, keep_alive)
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 87, in __init__
    
    self.start_session(desired_capabilities, browser_profile)
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 141, in start_session
    
    'desiredCapabilities': desired_capabilities,
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\webdriver.py", line 201, in execute
    
    self.error_handler.check_response(response)
    
      File "C:\Python27\lib\site-packages\selenium-2.48.0-py2.7.egg\selenium\webdriver\remote\errorhandler.py", line 181, in check_response
    
    raise exception_class(message, screen, stacktrace)
    
    WebDriverException: Message: An unknown server-side error occurred while processing the command. Original error: Could not find adb Please set the ANDROID_HOME environment variable with the Android SDK root directory path.
    

    一个测试样例

    创建脚本

    一个测试脚本样例:
    import os
    import unittest
    from appium import webdriver
    from time import sleep
    
    # Returns abs path relative to this file and not cwd
    
    
    class ContactsAndroidTests(unittest.TestCase):
        def setUp(self):
            desired_caps = {}
            desired_caps['platformName'] = 'Android'
            desired_caps['platformVersion'] = '4.2'
            desired_caps['deviceName'] = 'Android Emulator'
            //desired_caps['app'] = 'E://ContactManager.apk'
            desired_caps['appPackage'] = 'com.example.android.contactmanager'
            desired_caps['appActivity'] = '.ContactManager'
        
            self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
        
        def tearDown(self):
            self.driver.quit()
        
        def test_add_contacts(self):
            el = self.driver.find_element_by_accessibility_id("Add Contact")
            el.click()
        
            textfields = self.driver.find_elements_by_class_name("android.widget.EditText")
            textfields[0].send_keys("Appium User")
            textfields[2].send_keys("someone@appium.io")
        
            self.assertEqual('Appium User', textfields[0].text)
            self.assertEqual('someone@appium.io', textfields[2].text)
        
            self.driver.find_element_by_accessibility_id("Save").click()
        
            # for some reason "save" breaks things
            alert = self.driver.switch_to_alert()
        
            # no way to handle alerts in Android
            self.driver.find_element_by_android_uiautomator('new UiSelector().clickable(true)').click()
        
            self.driver.press_keycode(3)
            
    if __name__ == '__main__':
        suite = unittest.TestLoader().loadTestsFromTestCase(ContactsAndroidTests)
        unittest.TextTestRunner(verbosity=2).run(suite)
    

    Desired Capabilities

    desired_caps = {}
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '4.2'
    desired_caps['deviceName'] = 'Android Emulator'
    desired_caps['app'] = '../../../sample-code/apps/ContactManager/ContactManager.apk'
    desired_caps['appPackage'] = 'com.example.android.contactmanager'
    desired_caps['appActivity'] = '.ContactManager'
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    
    • deviceName:启动哪种设备,是真机还是模拟器?iPhone Simulator,iPad Simulator,iPhoneRetina 4-inch,Android Emulator,Galaxy S4…

      deviceName通过adb devices查看
      
    • platformName:使用哪种移动平台。iOS, Android, orFirefoxOS。

    • platformVersion:指定平台的系统版本。例如指的Android平台,版本为5.1。

    • app:apk文件的路径,appium会尝试先安装该app。

    • appActivity:待测试的app的Activity名字。比如MainActivity、.Settings。注意,原生app的话要在activity前加个”.“。

    • appPackage:待测试的app的Java package。比如com.example.android.myApp, com.android.settings。

    appActivity和appPackage一般由开发人员提供,如果无法获取的话,可以通过以下方式获取

    1、用winrar打开apk

    2、选择AndroidManifest.xml,右键查看文件

    3、查看

    其中:m a n i f e s t " c o m . e x a m p l e . a n d r o i d . c o n t a c t m a n a g e r"就是appPackage

    其中:a c t i v i t y � . C o n t a c t M a n a g e r 就是appActivity

    v e r s i o n C o d e   
     v e r s i o n N a m e   
     m i n S d k V e r s i o n   � t a r g e t S d k V e r s i o n   � n a m e   � l a b e l   � i c o n   
     d e b u g g a b l e   � a n d r o i d   * h t t p : / / s c h e m a s . a n d r o i d . c o m / a p k / r e s / a n d r o i d       � p a c k a g e    m a n i f e s t   " c o m . e x a m p l e . a n d r o i d . c o n t a c t m a n a g e r   � 1 . 0    u s e s - s d k   � u s e s - p e r m i s s i o n   � a n d r o i d . p e r m i s s i o n . G E T _ A C C O U N T S     a n d r o i d . p e r m i s s i o n . R E A D _ C O N T A C T S   ! a n d r o i d . p e r m i s s i o n . W R I T E _ C O N T A C T S   
     a p p l i c a t i o n    a c t i v i t y   � . C o n t a c t M a n a g e r   
     i n t e n t - f i l t e r   � a c t i o n   � a n d r o i d . i n t e n t . a c t i o n . M A I N    c a t e g o r y     a n d r o i d . i n t e n t . c a t e g o r y . L A U N C H E R   
    

    appium 定位控件

    这里通过appium自带的Inspector工具可以查看对象各种属性。也可以用android sdk自带的uiautomatorviewer.bat来进行定位

    1、启动appium server

    2、启动模拟器,并安装待测试的apk:ContactManager.apk(将文件拖入模拟器即可)

    3、模拟器中打开ContactManager.apk,放在待测试的页面

    4、点击Start Inspector session图标

    5、在name和value处分别输入以下内容,点击start session启动

    appium-1.PNG

    platformName  Android
    platformVersion  4.2
    deviceName  Android Emulator
    appPackage  com.example.android.contactmanager
    appActivity  ContactManager
    

    界面如下

    appium-1png.png

    录制脚本

    Inspector提供了简单的脚本操作

    1、选择录制脚本

    2、在页面上做一些操作,比如点击等

    3、可以看到页面上有脚本出现,复制脚本即可

    定位元素信息

    选中一个元素就可以实现定位,页面右侧展示了元素具体的内容

    注意:出现不能点击鼠标来进行定位的话,可以选用uiautomatorviewer.bat来进行定位,或者两个结合使用。

    appium-2.PNG

    id 定位

    如果目标设备的API Level低于18则UIAutomatorViewer不能获得对应的Resource ID,只有等于大于18的时候才能使用。

    image

    resource-id 就是我们理解的id属性了。

    使用方法:

    driver.findElement(By.id("com.android.calculator2:id/formula"))
    

    name 定位

    text就是我们要查找的name!

    使用方法:

    driver.findElement(By.name("21"))
    

    Accessibility ID定位

    这个方法属于Appium扩展的定位方法。

    其实,我们的核心是要找到元素的contentDescription属性。它就是元素的 content-desc 。

    使用方法:

    driver.findElementByAccessibilityId("Add contact").click();
    

    android uiautomator定位

    这个方法也属于 Appium(Android)扩展的定位方法。

    也就是说一个元素的任意属性都可以通过android uiautomator方法来进行定位,但要保证这种定位方式的唯一性。

    使用方法:

    
    driver.find_element_by_android_uiautomator('new UiSelector().text("Custom View")').click()       driver.find_element_by_android_uiautomator('new UiSelector().textContains("View")').click()     
    driver.findElementByAndroidUIAutomator('new UiSelector().description("equals")").click();
    
    

    需要注意的是 description() 方法用的是content-desc属性。

    find_elements_by_class_name方法

    方法:

    • find_elements_by_class_name()

    通过元素class name属性定位所有含有该属性的元素

    driver.find_elements_by_class_name('name')
    

    appium API

    sendKeys()方法

    方法:

    • sendKeys()

    用法:

    driver.findElements(By.name("Name")).sendKeys("jack");
    
    

    pressKeyCode()方法

    除此之外,appium扩展提供了pressKeyCode()方法。该方法Android特有。

    方法:

    • pressKeyCode()

    发送一个键码的操作。需要一个入参。

    driver.pressKeyCode(29); // 字母“a”
    driver.pressKeyCode(3);//KEYCODE_HOME 
    

    switch_to_alert()方法

    方法:

    • switch_to_alert()

    切换到alert窗口

    driver.switch_to_alert()
    

    click()方法

    方法:

    • click()

    点击某个控件

    element.click()
    

    API文档参考:http://blog.csdn.net/yangyinsong815/article/details/51235708

    至此,脚本中所有的知识点讲解完毕,现在开始运行它吧!运行之前请确保模拟器打开!

    真机运行

    模拟器并不能模拟真实的手机执行,最终我们的案例还是需要在真机中进行。

    真机和模拟器执行的区别在于:

    真机运行需要打开USB调试所有项

    展开全文
  • 安装配置Appium环境安装appium安装appium有两种方式,一种是通过命令行终端方式,一种是Appium Desktop。这里推荐使用Appium Desktop方式,只需下载下来...这是实现自动化测试很重要的一步。驱动其实也集成在了Appi...

    安装配置Appium环境

    安装appium

    安装appium有两种方式,一种是通过命令行终端方式,一种是Appium Desktop。这里推荐使用Appium Desktop方式,只需下载下来安装就可以啦。Appium Desktop下载

    安装驱动

    根据被测应用平台选择不同的驱动,这里在Xcode9上测试iOS,选择XCUITest Driver。这是实现自动化测试很重要的一步。驱动其实也集成在了Appium Desktop中,不需单独安装,但运行环境需要搭好。

    1.iOS设备系统必须是iOS9.3及以上

    2.macOS系统必须是10.11或10.12

    3.Xcode版本为Xcode8及以上

    4.Appium版本为1.6及以上

    5.安装所需依赖库,包括:

    a.node (brew install node)

    b.npm (brew install npm)

    c.carthage (brew install carthage)

    d.libimobiledevice(真机测试需要)(brew install libimobiledevice)

    e.ios-deploy(真机测试需要)(brew install ios-deploy)

    确定所有依赖是否安装成功,可通过appium-doctor验证,首先安装appium-doctor(npm install -g appium-doctor),然后在终端运行appium-doctor,如图所示,都是打钩状态就证明环境正常(java相关环境不需要配置。

    更新Appium中的WebDriverAgent

    网上很多是到WebDriverAgent下载最新版本的WebDriverAgent,然后配置替换Appium路径下的WebDriverAgent(/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/),但真机测试一启动导致App反复重启。

    这里是不用替换,直接用appium自带的WebDriverAgent,进行相关配置即可。

    cd 进入appium的WebDriverAgent文件,路径:(/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/)

    执行 ./Scripts/bootstrap.sh

    直接用Xcode打开WebDriverAgent.xcodepro文件

    配置WebDriverAgentLib和WebDriverAgentRunner的证书

    连接并选择自己的iOS设备,然后按Cmd+U,或是点击Product->Test

    运行成功时,在Xcode控制台应该可以打印出一个Ip地址和端口号

    在网址上输入http://192.168.2.101:8100/status,如果网页显示了一些json格式的数据,说明运行成功。

    最后一步这里在电脑浏览器访问真机ip时,一直报超时。在网上找到了答案,说国产机通过手机的IP和端口还不能访问,此时需要将手机的端口转发到Mac上。

    启动Appium Desktop,开始测试!

    运行Appium-Desktop

    开启start server

    点击start new session并且在Desired Capabilities 中输入相关的参数后点击Start Session

    运行成功后,会弹出一个控制界面,在该界面中可以控制手机上正在运行的程序

    利用Appium-Python-Client进行iOS的自动化测试

    1.首先在终端安装,python install Appium-Python-Client,如果是python3,就用python3 install Appium-Python-Client

    2.在git上下载测试文件测试demo

    3.用下载的demo配置好证书,直接安装到手机上

    4.找到demo下文件下的appiumSimpleDemo.py,编辑里面的参数udid,和bundleid,里面的app参数如果已经把demo安装到手机的话,可以注释掉;省得去编译测试demo;

    5.执行demo下文件下的appiumSimpleDemo.py,终端执行python appiumSimpleDemo.py(或python3 appiumSimpleDemo.py),就可以看到真机开始自动执行测试代码

    展开全文
  • appium 自动化测试

    2017-09-21 19:36:00
  • Appium自动化测试完整案例

    热门讨论 2015-08-26 09:45:38
    Appium自动化测试完整案例,讲的很详细,适合初学者
  • IOS appium自动化测试python脚本
  • APPIUM自动化测试例子:安卓系统仿真,调用计算器例子,安卓版本5.1.1,版本可以通过修改文档参数platformVersion更改
  • Appium自动化测试Android

    万次阅读 2017-01-20 10:07:14
    Appium自动化测试AndroidAppium自动化测试Android Appium相关环境配置配置jdk和Android SDK 配置nodejs 安装配置appium Appium测试Demojava推荐使用PythonJava的配置相当复杂但是Java可供操作的选项多一点一般情况下...
  • APPIUM自动化测试之APP启动

    千次阅读 2019-10-14 18:05:19
    APPIUM自动化测试环境搭建 如果在线安装Android SDK时,镜像文件老是加载失败时的解决方案 Android SDK 的安装与配置 具体的安装配置参考以下链接 APPIUM自动化测试环境搭建实践 Appium+python自动化1-环境搭建...
  • 在python会遇到python+appium自动化测试中toast定位,直接上代码,更方便理解
  • Appium自动化测试套餐

    2020-02-17 14:54:54
    第1门课程涵盖知识点:Andriod 移动App的类型、App 自动化测试工具&框架、Android 模拟器、UiAutoMator、ADB命令、activity、monkey的操作事件、monkey命令操作、monkey命令综合案例、monkey自定义脚本、monkey...
  • appium自动化测试环境搭建 pdf:
  • Appium自动化测试PO框架实例(Eclipse版)
  • 不过宏哥经过一段时间的准备,appium的自动化测试框架完善的差不多了,那么接下来宏哥继续给小伙伴和童鞋们分享有关Appium自动化测试框架综合实践。想必小伙伴们有点等不及了吧!driver配置封装kyb_caps.yaml 配置表...
  • 支持多种编程语言,可用于原生,混合和移动web应用程序,使用webdriver驱动ios,android应用程序、那么为了学习app自动化测试首要任务肯定就是搭建测试开发环境, 因此在这里记一次搭建Appium自动化测试环境的完整...
  • Appium自动化测试 Appium、java、node.js环境配置 遇到的问题及解决方案 selenium-java以及selenum-server版本要相互匹配并不要太高; java-clinet版本不宜过高,建议使用5.0.0-BETA9; guava.jar版本不能低于...
  • appium自动化测试问题收集 1:无法更新SDK,查看此篇文章:感谢作者 ...depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-3.
  • 本文档由松勤网(松勤软件测试)整理提供,详细讲解appium自动化测试环境的搭建以及使用。
  • 在学习appium自动化测试前我们先来了解一下什么是appium。 appium是一个开源测试自动化框架,可用于原生,混合和移动web应用程序测试,它可以跨平台同时支持Android、iOS 支持多种语言python、java\php等,如何啊你...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,551
精华内容 2,220
关键字:

appium自动化测试