zoukankan      html  css  js  c++  java
  • Appium移动自动化测试-----(六)2.AppiumDesktop录制脚本生成极简脚本

    AppiumDesktop启动页面:

    启动AppiumDesktop以后点击该页面右上角的Start New Session按钮,就会启动一个新的会话窗口(如下图),在这个窗口我们需要配置一些Desired Capabilities信息:

    platformName:'Android'    #Android手机
    platformVersion:'4.3  '       #模拟器系统是4.3
    deviceName:'192.168.105.101::5555'    # 这个是模拟器的设备名称

    app:'D:\app\SHIPPER_Android_TEST_4.1.1.0.apk'        # 安装自己待测app,类型为filepath

    appPackage:'com.taobao.taobao'    #app的包名称

    appActivity:'com.taobao.tao.welcome.Welcome  '       #activity的名称

    使用命令查看:adb shell dumpsys activity activities

    noReset:是一个bool值,选TRUE。
    如果想要使用真机,必须再加一个字段udid,是text类型。

     2.参数配置好之后可以保存下,然后启动模拟器,再点Start Session按钮就能定位元素了

    定位元素信息

    写Appium脚本的最重要的一个信息是定位元素,获取元素的ID或者xpath等等类似的信息。
    只需要点击Inspector最左边一栏的Select按钮,然后再去点击所要获取信息的元素即可,当元素突出显示时,其信息将显示在Inspector右侧的详细视图中。有些是用accessibility id 定位,有些是xpath定位或者其他的定位信息,但是在iOS应用上Appium推荐使用accessibility id 来定位一个元素信息。
    在Inspector窗口的中间是您的应用程序的层次结构,表示为XML。

    滑动页面(元素)

    现在可以定位当前页面的元素了,但是怎么滑动到下一个页面或者怎么滑动页面上的滑动条(slider)呢?
    选中Swipe。模拟在手机上的操作手势,从起点到终点各点击一下,就实现了滑动。

     

    点击某一个元素

    如果我们想要点击某一个元素进行下一步操作,比如在输入框内输入文本或者弹出一个alert该怎么操作呢?
    选中Tap。然后再去点击textfield或者alert我们就可以进行下一个操作了。如果想要定位alert上的元素信息,那就在alert弹出的时候在切换到Select,然后点击想要定位的元素就行了。

    录制脚本

    这真的是一个很实用的功能。他似乎解决了我们一个大问题,那就是该使用哪个API的问题以及脚本的编写规范的问题。对于初步入坑的小伙伴来说是一个很好的参考。脚本录制功能就是那个眼睛图标,如下图:

    脚本录制.png
    脚本录制.png

    点击该按钮以后如下图:

    脚本录制.png
    脚本录制.png

    然后就可以在左边随便对App进行操作了,此处我进行的操作有:点击输入框,点击Alert,滑动滑动条,滑动屏幕,点击软键盘并输入文本(这里我选择是Python语言)。这时候Inspector生成的脚本是非常简单的,只是对你操作的步骤进行记录,还不能执行,这段脚本如下:

    TouchAction(driver).tap([(167, 73)])
    TouchAction(driver).tap([(81, 300)])
    TouchAction(driver).tap([(303, 414)])
    el1 = driver.find_element_by_accessibility_id("IntegerA")
    el1.click()
    el1.send_keys("Hello")
    TouchAction(driver)
    .press({x: 198, y: 393})
    .moveTo({x: 50: y: 0})
    .release()
    TouchAction(driver)
    .press({x: 335, y: 264})
    .moveTo({x: -183: y: -3})
    .release()
    TouchAction(driver).tap([(191, 498)])
    TouchAction(driver).tap([(357, 698)])

    反正我没看懂这段代码。别担心,这只是Inspector默认生成的极简脚本,善良的Inspectory为我们提供了一个功能那就是将极简脚本变成可执行脚本,操作如下图:

    脚本录制.png
    脚本录制.png

    现在脚本就变成了这个样子:

    # This sample code uses the Appium python client
    # pip install Appium-Python-Client
    # Then you can paste this into a file and simply run with Python
    from appium import webdriver
    caps = {}
    caps["platformName"] = "iOS"
    caps["platformVersion"] = "10.3"
    caps["deviceName"] = "iPhone 7 Plus"
    caps["app"] = "http://appium.s3.amazonaws.com/TestApp7.1.app.zip"
    caps["noReset"] = True
    driver = webdriver.remote("http://0.0.0.0:4723/wd/hub", caps)
    TouchAction(driver).tap([(167, 73)])
    TouchAction(driver).tap([(81, 300)])
    TouchAction(driver).tap([(303, 414)])
    el1 = driver.find_element_by_accessibility_id("IntegerA")
    el1.click()
    el1.send_keys("Hello")
    TouchAction(driver)
    .press({x: 198, y: 393})
    .moveTo({x: 50: y: 0})
    .release()
    TouchAction(driver)
    .press({x: 335, y: 264})
    .moveTo({x: -183: y: -3})
    .release()
    TouchAction(driver).tap([(191, 498)])
    TouchAction(driver).tap([(357, 698)])
    driver.quit()

    这样是不是就和我们写的脚本格式一样了,你学会了吗?
    在学习过程中遇到问题可以留言,互相学习,共同进步!

  • 相关阅读:
    一文搞懂Raft算法
    设计数据密集型应用第三部分:派生数据
    对一次架构设计的总结和反思
    One take,可望而不可即
    设计数据密集型应用第二部分:分布式系统的机遇与挑战
    [代码重构]简化函数调用
    [代码重构]简化函数调用
    [Vue专题] 对比vue-cli2.x和vue-cli3.x的搭建
    npm ERR! code ENOLOCAL
    Jenkins配置基于角色的项目权限管理
  • 原文地址:https://www.cnblogs.com/kaola8023/p/8465739.html
Copyright © 2011-2022 走看看