精华内容
下载资源
问答
  • appium工作原理appium 在android端工作流client端也就是我们 test script是我们的webdriver测试脚本。中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium...

    appium工作原理

    appium 在android端工作流

    client端也就是我们 test script是我们的webdriver测试脚本。

    中间是起的Appium的服务,Appium在服务端起了一个Server(4723端口),跟selenium Webdriver测试框架类似, Appium⽀持标准的WebDriver JSONWireProtocol。在这里提供它提供了一套REST的接口,Appium Server接收web driver client标准rest请求,解析请求内容,调用对应的框架响应操作。

    appium server会把请求转发给中间件Bootstrap.jar ,它是用java写的,安装在手机上.Bootstrap监听4724端口并接收appium 的命令,最终通过调用UiAutomator的命令来实现。

    最后Bootstrap将执行的结果返回给appium server。

    appium server再将结果返回给 appium client。

    一、环境准备

    win10版本  64位操作系统

    安卓机   6.0.1版本

    jdk  9.0.1 64位

    android-sdk   23(安卓6.0对应sdk23)

    python  2.7.14

    node.js  node-v8.12.0-x64.msi

    appium  appium-desktop-setup-1.7.1.exe

    二、JDK下载安装

    三、android-sdk下载安装

    解压后,里面有个SDK manager.exe,设置 Android SDK Manager 国内镜像地址

    启动 Android SDK Manager ,打开主界面,依次选择「Tools」、「Options…」,弹出『Android SDK Manager – Settings』窗口;

    在『Android SDK Manager – Settings』窗口中,在「HTTP Proxy Server」和「HTTP Proxy Port」输入框内填入mirrors.neusoft.edu.cn和80,并且选中「Force https://… sources to be fetched using http://…」复选框。设置完成后单击「Close」按钮关闭『Android SDK Manager – Settings』窗口返回到主界面;

    依次选择「Packages」、「Reload」。

    四、android-sdk环境变量

    1.在系统变量新建:ANDROID_HOME,对应变量值为:D:\appium\android-sdk\android-sdk-windows(sdk安装路径)

    2.path添加两个变量D:\appium\android-sdk\android-sdk-windows\tools和D:\appium\android-sdk\android-sdk-windows\platform-tools

    五、adb环境

    1.因为adb是在android-sdk-windows\platform-tools这个目录下的,所以上面添加了环境变量后,可以直接在cmd里面运行了。

    2.在cmd输入adb可以查看对应版本号

    六、连接手机

    1.手机用数据线以USB连电脑

    2.打开cmd输入:adb devices,当屏幕上出现一串字符,后面显示device说明连接成功

    七、python安装

    八、安装node.js

    九、安装appium

    十、安装Appium-Python-Client

    1.前面python环境安装,已经准备好pip了,所以这里直接打开cmd,输入:pip install Appium-Python-Client

    十一、获取apk包名

    1.将准备测试的APK放到D盘某个目录,如D:\test

    2.打开cmd,输入指令aapt dump badging D:\test\xxx.apk(APK的全名)

    package: name='XXX'

    十二、获取launcherActivity

    1.接着上一步操作,cmd屏幕拖到中间l找到auncherActivity

    launchable-activity: name='XXXXXX'

    十五、写脚本

    # coding=utf-8

    from appium import webdriver

    desired_caps = {

    'platformName': 'Android',

    'deviceName': 'cdc7d766',

    'platformVersion': '6.0',

    # apk包名

    'appPackage': 'XXX',

    # apk的launcherActivity

    'appActivity': 'XXXXXX'

    }

    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    展开全文
  • 真的感谢@虫师 这位来自互联网的老师,让我这个原本对代码胆怯且迷惑的人开始学习自动化测试。一开始搜索自动化测试的时候,虫师的博客园教程都是在百度的前几位的,我就跟着虫师博客园里面的教程学习。后来学...

    真的感谢@虫师 这位来自互联网的老师,让我这个原本对代码胆怯且迷惑的人开始学习自动化测试。

    一开始搜索自动化测试的时候,虫师的博客园教程都是在百度的前几位的,我就跟着虫师博客园里面的教程学习。后来学seleinum听说他出书了《python+selenium》的这本我买了也学习了,是这本书带着我这个代码小白入门的,其实很多事情不愿意开始就一直不会开始,一旦开始了,可能也没有当初想的那么难。最近想学习下appium的时候发现他还有一个专门针对测试的网页http://www.testclass.net/,现在这么有用且条理清晰没有广告的网站真的很难得。

    有关appium几乎所有的内容都是跟着testclass网站上的教程走下来的,不过踩到了几个坑,这里就记录一下这几个坑。

    一、Could not extract PIDs from ps output.

    配置好所有的环境后,运行脚本,提示下面的错误:

    selenium.common.exceptions.WebDriverException: Message: A new session could not be created. (Original error: Could not extract PIDs from ps output. PIDS: [], Procs: ["bad pid 'uiautomator'"])

    修改 Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js 文件

    添加这行:

    this.shell("ps '" + name + "'", function (err, stdout) {

    ...

    var procs = [];

    var outlines = stdout.split("\n");

    outlines.shift()   //添加这行

    参考文档:http://blog.csdn.net/zxz_tsgx/article/details/53204258

    二、获取应用的包名packageName 和 ActivibyName

    配置desired_caps 信息时需要获得appPackage和appActivity

    desired_caps = {}

    desired_caps['platformName'] = 'Android'

    desired_caps['platformVersion'] = '7.0'

    desired_caps['deviceName'] = 'c1b8cb07'

    desired_caps["appPackage"] = 'com.lianchuan.cashloan'

    desired_caps['appActivity'] = 'com.lianchuan.cashloan.activity.other.SplashActivity'

    如果关于apk的信息未知,可以通过使用logcat方法:

    清除logcat内容,使用命令adb logcat -c

    启动logcat,使用命令adb logcat ActivityManager:I *:s

    启动要查看的程序

    括号中分别为PackageName和ActivityName

    参考文档:http://blog.csdn.net/jlminghui/article/details/40622103

    三、有关开启android模拟器

    创建模拟器时提示 No System images installed for this target,需要到SDK Manager中安装“ARM EABI v7a System Image”组件。

    模拟器打开是很慢的,需要很多耐心,且模拟其中的一些操作和真机还有所不同,下面是模拟器按键和键盘按键的对应。

    参考文档:http://www.cnblogs.com/fnng/p/4560298.html

    四、android webdriver appium中的Xpath定位

    appium中的定位主要用到的工具是SDK 自带的uiautomatoviewer.bat,这个文件存放在SDK 目录的tools文件夹中。

    UI automator Viewer工具可以查看录制下来的页面的属性。

    参考文档:https://testerhome.com/topics/7129

    五、appium中滑动屏幕的方法

    appium中的swipe方法的使用为:swipe(int startx, int starty, int endx, int endy, int duration)

    start_x:开始滑动的x坐标。 * start_y:开始滑动的y坐标。 * end_x:结束滑动的x坐标。 * end_y:结束滑动的y坐标。 * duration:持续时间

    但是不同大小的手机屏幕,元素所在的位置是不确定的,所以可以用占屏幕的位置比例来定位滑动的位置。

    获取屏幕的宽  width = driver.get_window_size()['width']

    获取屏幕高  height = driver.get_window_size()['height']

    获得屏幕的宽高之后,上滑操作可以理解为,手指从屏幕的3/4高度出移动到1/4高度处。

    driver.swipe(1/2*width, 3/4*height, 1/2*with, 1/7*height, 200)

    参考文档:http://blog.csdn.net/u011541946/article/details/77986018

    六、在有些手机上每次运行都要提示安装Appium Settings 和 Unlock的问题

    不同的手机设置这个情况也未必都会出现,如果出现这个问题,可以在手机已经安装好这两个之后,操作\Appium\node_modules\appium\lib\devices\android目录下的android.js文件

    //this.pushSettingsApp.bind(this),

    //this.pushUnlock.bind(this),

    //this.unlock.bind(this),

    将上面三行注释再重启appium。

    参考文档:https://www.cnblogs.com/dreamyu/p/8027050.html

    七、Appium中send_keys无法输入中文 和 Appium中键盘输入不能使用的问题

    Appium已支持中文输入,但是需要用appium自带输入法(没有UI 界面)

    在初始化设置中增加一下两行代码:

    desired_caps["unicodeKeyboard"] = "True"

    desired_caps["resetKeyboard"] = "True"

    参考文档:https://testerhome.com/topics/1903

    Appium中键盘输入无法使用问题,需要用adb方法先调用一个输入法,在cmd中输入

    adb shell ime list -s      查看所有可用输入法

    adb shell ime set com.sohu.inputmethod.sogou/.SogouIME    调用搜狗输入法

    将对adb的调用写入python代码:

    import os

    command = 'adb shell ime list -s'

    os.system(command)

    以上代码就可以在python中使用adb命令。

    参考文档:https://www.jianshu.com/p/28937a73316e

    (有些输入法依旧不能使用键盘press_keycode功能,测试搜狗输入法可以使用;但是有的输入法不能直接用send_keys上传文字,测试搜狗输入法不能直接上传文字,这时候,又需要用上面那个方法调出appium自带的输入法输入中文后,再换成搜狗,然后再点击键盘……复杂了我的appium!)

    展开全文
  • 安装配置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),就可以看到真机开始自动执行测试代码

    展开全文
  • 一、运行时会重装 APP 问题问题:在使用 Appium 运行自动化代码的时候,每次运行会自动清除 APP 的原来数据,并将 APP 卸载,再重新安装打开。解决:在 APP 启动的参数设置中添加"noReset": True,表示启动 APP 时不...

    这篇文章总结了我平时用的比较多的 3 个设置,后续有用到其它的,会继续更新哦。

    一、运行时会重装 APP 问题

    问题:在使用 Appium 运行自动化代码的时候,每次运行会自动清除 APP 的原来数据,并将 APP 卸载,再重新安装打开。

    解决:在 APP 启动的参数设置中添加"noReset": True,表示启动 APP 时不清除 APP 里的原有的数据。未设置该参数,系统默认为"noReset": False,表示在启动 APP 时会自动清除卸载 APP,重新安装,所以每次打开的 APP 都是新安装的 APP。

    代码示例:

    from appium import webdriver

    def start(self):

    caps = {"platformName": "Android",

    "deviceName": "ABCDEFGHIJKLMNOPQ",

    "platforVersion": "9",

    "appPackage": "com.sina.weibo",

    "appActivity": "com.sina.weibo.SplashActivity",

    "autoGrantPermissions": "true",

    "automationName": "UiAutomator2",

    # 启动app时不要清除app里的原有的数据 "noReset": True

    }

    self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

    self.driver.implicitly_wait(20)

    二、执行测试用例会重启 APP

    问题:执行多条测试用例时,每执行完一个测试用例,都会重新启动 AP

    解决:在测试用例类中导入 pytest,将测试用例类中的初始化函数设置为 setup_class,修改后启动 APP,只会执行一次初始化。

    setup_class(self):这是一个 class 级别的 setup 函数,它会在这个测试类 TestAccountLogin 里所有 test 执行之前,被调用一次。

    teardown_class(self):这是一个 class 级别的 teardown 函数,他会在这个测试类 TestAccountLogin 里所有 test 执行之后,被调用一次。

    代码示例:

    import pytest

    from common.init import AppStart

    class TestAccountLogin:

    def setup_class(self):

    self.accountloginpage = AppStart.start()

    def teardown_class(self):

    AppStart.quit()

    三、自定义测试用例执行顺序

    问题:默认情况下,pytest 框架的测试用例执行顺序是按照字母的顺序执行的,如何自定义设置测试用例的执行顺序?

    解决:有两种解决方法,分别为:

    1.使用函数修饰符的方式来标记被测试函数执行的顺序,插件名称为 pytest-ordering

    2.将测试用例命名为数字

    方法一:使用函数修饰符的方式来标记被测试函数执行的顺序

    1.需要先安装插件 pytest-ordering

    安装包安装:python setup.py install

    命令行安装:pip3 install pytest-ordering

    插件安装成功如下图所示

    40653b384313f93b1c00baf2c4c770cb.png

    2.使用方法

    标记于被测试函数,@pytest.mark.run(order=x)

    根据 order 传入的参数来解决运行问题

    order 值全为正数或全为负数时,值越小,优先级越高

    正数和负数同时存在时,正数优先级高

    如下所示:

    import pytest

    from common.init import AppStart

    class TestAccountLogin:

    def setup_class(self):

    self.accountloginpage = AppStart.start()

    @pytest.mark.run(order=-1)

    def test_account(self):

    print("01")

    @pytest.mark.run(order=2)

    def test_pwd(self):

    print("02")

    @pytest.mark.run(order=3)

    def test_phone(self):

    print("03")

    def teardown_class(self):

    AppStart.quit()

    以上会按照 test_pwd→test_phone→test_account 的顺序执行

    方法二:将测试用例的函数名命名为数字,即会按照数字由小到大的顺序执行

    如下所示:

    import pytest

    from common.init import AppStart

    class TestAccountLogin:

    def setup_class(self):

    self.accountloginpage = AppStart.start()

    @pytest.mark.run(order=-1)

    def test_01(self):

    print("01")

    @pytest.mark.run(order=2)

    def test_02(self):

    print("02")

    @pytest.mark.run(order=3)

    def test_03(self):

    print("03")

    def teardown_class(self):

    AppStart.quit()

    会按照 01→02→03 的顺序执行

    以上内容有错误的地方,大家多多指正,谢谢!

    展开全文
  • 脚本语言:Python3.x IDE:安装Pycharm2.安装Java JDK 、Android SDK3.adb环境,path添加E:SoftwareAndroid_SDKplatform-tools4.安装Appium for windows点击下载按钮会到GitHub的下载页面,选择对应平台下载安装完成...
  • 脚本语言:Python3.x IDE:安装Pycharm2.安装Java JDK 、Android SDK3.adb环境,path添加E:\Software\Android_SDK\platform-tools4.安装Appium for windows,官网地址http://appium.io/点击下载按钮会到GitHub的下载...
  • 项目名及简介此项目是在appium和Selenium开源工具封装而成的自动化app和web测试工具功能都是基于python3都是基于webdriver,大部分代码都可以通用,只是配置文件不一样APP监控了常用的men,cpu,fps数据维护用的YMAL...
  • 执行完成后,在 report 文件夹下会生成一个 html 文件,在 html 目录下会生成 index.html 文件,即为可视报告,如下图所示 3.打开 html 文件,右键点击 index.html 文件,选择 open in Broswer,选择 Chrome ...
  • Python Appium自动化测试连接真机遇到的问题 作者在win7虚拟机VMvare下,搭建Python+Appium自动化测试连接真机时,遇到的问题:adb devices List of devices attached列表为空… 问题描述 win7虚拟机VMvare下,...
  • 不过宏哥经过一段时间的准备,appium的自动化测试框架完善的差不多了,那么接下来宏哥继续给小伙伴和童鞋们分享有关Appium自动化测试框架综合实践。想必小伙伴们有点等不及了吧!driver配置封装kyb_caps.yaml 配置表...
  • 脚本语言:Python3.x IDE:安装Pycharm2.安装Java JDK 、Android SDK3.adb环境,path添加E:\Software\Android_SDK\platform-tools4.安装Appium for windows,官网地址 http://appium.io/点击下载按钮会到GitHub的...
  • 1.安装配置好appium+python+sdk(java)等环境2.打开手机的USB调试模式,手机的“设置”—“关于手机”,双击“版本号”,选择“系统和更新”—“开发人员选项”—打开“USB调试”3.在cmd下运行命令:adb devices查看...
  • 本文主要介绍完整构建针对andorid项目构建appium自动化的过程,万事开头难,相信读完此文可以让你少踩几个坑。(如有错误,敬请留言)1、下载appium应用程序2、创建virtualenv,安装Appium-Python-Clientmkdir ...
  • 脚本语言:Python3.x IDE:安装Pycharm2.安装Java JDK 、Android SDK3.adb环境,path添加E:SoftwareAndroid_SDKplatform-tools4.安装Appium for windows,官网地址http://appium.io/点击下载按钮会到GitHub的下载...
  • 在实际自动化项目运行过程中,很多时候 App 可以会出现各种异常,为了更好的定位问题,除了捕捉日志我们还需要对运行时的设备状态来进行截屏,从而达到一种 “有图有真相” 的效果。1、截图方法方法1:save_...
  • 正如您在全新的TestProject Python SDK(第1部分和第2部分)上的先前文章中可能已经读到...测试报告在任何测试自动化框架中都是至关重要的,而且我们都知道,即使专家也需要付出多大的努力才能生成测试自动化报告,更...
  • 打开app,滑动引导页,在登录页输入号码和验证码进行登录appium会比较简单一点,在appium端进行录制,录制结束后可以自动生成python脚本,复制到pycharm之后修改一下就可以运行了from appiumimport webdriverfrom ...
  • 脚本语言:Python3.xIDE:安装Pycharm2.安装Java JDK 、Android SDK3.adb环境,path添加E:\Software\Android_SDK\platform-tools4.安装Appium for windows,官网地址http://appium.io/ 点击下载按钮会到GitHub的下载...
  • 借助Appium做移动端自动化测试的开发环境搭建,Python环境:Appium+Pycharm+Unittest
  • 前面 Appium 自动化测试框架大概发的都差不多了,那么接下来分享有关 Appium 自动化测试框架的综合实践,想必有些小伙伴都等不及了吧! 1、driver配置封装 kyb_caps.yaml 配置表 ,主要是一些配置信息的封装。 代码...
  • 我们在《Appium自动化测试系列1-Appium环境的安装和配置》里已经搭好了Appium的基本环境,这一章,我们就来真刀真枪使用一下Appium, 看看Appium是如果来实现自动化测试的。在写测试脚本之前,我们先安装几个必要的...
  • ---------2017.11.16 更新-----------------------Appium 自动化测试是很早之前就想学习和研究的技术了,可是一直抽不出一块完整的时间来做这件事儿。现在终于有了。反观各种互联网的招聘移动测试成了主流,如果再不...
  • 最近晚上都在找APP做UI自动化测试,主要是学习设计流程,权当温习。今晚练习了一个小项目,就是手机自带的“计算器”,练习加减乘除的运算。第一步:新建一个文件夹,练习的项目都放在这个文件夹内。(pycharm上新建)...
  • 基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告代码示例:1 #利用unittest并生成测试报告2 class Appium_test(unittest.TestCase):3 """appium测试类"""4 def setUp(self):5 ...
  • 一、自动删除contactmanager自动化测试appium提供的sample如下包/activity:com.example.android.contactmanager/.ContactManager ,发现提示如下错误info: [debug] Error: Activity used to start app doesn't exist...
  • from appium import webdriver import time import os def testCase(platformName,platformVersion,deviceName,app,appPackage,appActivity,port): PATH = lambda p: os.path.abspath(os.path.join(os.path....
  • App自动化测试入门实例 1.功能描述 Android模拟器上的计算器可以说是Android内置的App,实现自动化模拟手工操作,单击1,单击+,单击1,单击=,于是计算器上自动得出结果2。 2.程序清单1:文件名appauto_testcase...
  • 那么这种高级绚丽的溜冰滑动在 Appium 中该如何模拟这类操作呢?下面一一道来。 1、TouchAction Touch Action 包含一些列操作,比如按压、长按、点击、移动、暂停。由着些不同操作可以组成一套动作。使用 TochAction...
  • 基于python单元测试框架unittest完成appium自动化测试,生成基于html可视化测试报告代码示例:#利用unittest并生成测试报告class Appium_test(unittest.TestCase):"""appium测试类"""def setUp(self):desired_caps =...

空空如也

空空如也

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

pythonappium自动化

python 订阅