• app自动化12


    Webview

    查看webview元素的方式

    通过 chrome 直接连接手机查看

    使用 genymotion 打开需要查看的 webview 界面
    (webview:用html写的手机页面,不是用android原生写的)
    在 chrome 中 输入 chrome://inspect 地址,并点击 inspect
    选中 "select an element…" 选项
    选中要查看的元素,即可自动跳转到对应的代码

    通过chrome查看手机网页地址

    使用 genymotion 打开需要查看的 webview 界面,并全选地址
    将地址粘贴到 chrome 中进行打开,并使用 右键元素-检查 的形式进行查看

    关于查看元素的注意点

    inspect 工具 和 android 版本有关
    工具是否有 "select an element…" 按钮取决于 android 版本,有些版本可能并没有 "select an element…" 的按钮,
    比如 android 5.1,如果真的需要对 android 5.1 需要查看,只能从代码中一个一个找。
    能否使用chrome 直接查看手机地址与网页地址有关
    比如,网易新闻的 新闻页面 是使用的 WebView,但开发人员是将整个网页下载到手机后,再通过下载在手机的地址
    进行加载。而复制的地址是手机的绝对路径,在电脑上是无法打开的。

    实现webview自动化

    前置代码,和之前相同(打开的包名和启动名是浏览器软件)
    获取,driver的所有的上下文。
        得到,一个原生的app的字符串,还有其他各种webview的字符串。
    contexts = driver.contexts
    for i in contexts:
        print(i)
    - - 如:

      - NATIVE_APP(原生)
      WEBVIEW_com.android.browser(webview的浏览器页面)
    - 通过,driver的switchto来切换上下文
    # 告诉appium需要查找的是 com.android.browser程序的webview的内容
    driver.switch_to.context("WEBVIEW_com.android.browser")
    切换后可以使用selenium的方法进行元素定位
    包括,点击已经输入文字等api都是相同的。
    案例:
    在浏览器应用中打开百度首页,并在搜索框中输入10086。
    核心代码
    import os,sys
    sys.path.append(os.getcwd())
    import time
    from appium import webdriver
    def init_driver():
        # server 启动参数
        desired_caps = {}
        # 设备信息
        desired_caps['platformName'] = 'Android'
        desired_caps['platformVersion'] = '10'
        desired_caps['deviceName'] = '192.168.56.101:5555'
        # app的信息
        desired_caps['appPackage'] = 'com.android.browser'
        desired_caps['appActivity'] = '.BrowserActivity'
        # 解决输入中文
        desired_caps['unicodeKeyboard'] = True
        desired_caps['resetKeyboard'] = True
        desired_caps['noReset'] = True  # 保留软件数据,否则每次一开始都要有一些权限问题,会报错的
        # 声明我们的driver对象
        driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
        time.sleep(5)
        print(driver.contexts)
        # 打开百度
        driver.find_element_by_id("com.android.browser:id/search_hint").click()
        # python中不用切换webview好像也可以
        time.sleep(3)
        driver.find_element_by_id('com.android.browser:id/url').send_keys("www.baidu.com")
        time.sleep(3)
        driver.press_keycode(66)
    
        # 在百度框输入搜索
        time.sleep(3)
        driver.find_element_by_class_name('android.widget.EditText').click()
        # 输入10086并搜索
        time.sleep(3)
        e1 = driver.find_element_by_class_name('android.widget.EditText')
        print(e1.text)
        e1.send_keys('10086')
        time.sleep(3)
    
    init_driver()
    关于inspect空白问题
    需要FQ一次!

    ios

    运行ios项目

    苹果系统上的模拟苹果手机的模拟器是xcode
    快捷键 command + r
    或者
    点击左上角“播放”按钮
    编译的快捷键 command + b

    ios前置代码

    # server 启动参数
    desired_caps = {}
    # 设备信息
    desired_caps['platformName'] = 'iOS'
    desired_caps['platformVersion'] = '11.3'
    desired_caps['deviceName'] = 'iPhone 8 Plus'
    # app的信息
    desired_caps['app'] = "com.itheima.HMWaiMai1"
    # 解决输入中文
    desired_caps['unicodeKeyboard'] = True
    desired_caps['resetKeyboard'] = True
    
    # 不要重置应用
    desired_caps['noReset'] = True
    
    # 声明我们的driver对象
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    已经安装

    desired_caps['app'] = "com.itheima.HMWaiMai1"
    要一份源码,打开Xcode,选择对应模拟器,“command+r”运行
    desired_caps['deviceName'] = 'iPhone 8'
    # 这个key “deviceName” 在iOS中是有用的。在android中可以随便写,只要不是不传或空字符串都可以。
    # 但是,在iOS中,应该写对应的设备名字,如果名字是正确的(iPhone 6s),会重新打开,如果没有对应的设备名字,会报错。

    没有安装

    desired_caps['app'] = os.path.abspath("./HMWaiMai.app")  # 建议!!!
    desired_caps['app'] = "./test_ios/HMWaiMai.app"
    找到项目下的Products文件夹,里面有项目名.app,如果为红色,按下“command+b”进行编译,自动生成。

    Monkey

    环境

    同Android环境

    什么是Monkey

    顾名思义,Monkey就是猴子,  Monkey测试,就像一只猴子, 在电脑面前,乱敲键盘在测试。  猴子什么都不懂, 只知道乱敲
    通过Monkey程序模拟用户触摸屏幕、滑动Trackball、 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常.

    Monkey用来做什么

    Monkey 主要用于Android 的压力测试  自动的一个压力测试小工具, 主要目的就是为了测试app 是否会Crash.

    Monkey程序介绍

    Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar;   
    Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;  
    Monkey 命令启动方式:
    - 可以通过PC机CMD窗口中执行: adb shell monkey {+命令参数}来进行Monkey测试          
    - 在PC上adb shell 进入Android系统,通过执行 monkey {+命令参数} 来进行Monkey 测试          
    - 在Android机或者模拟器上直接执行monkey 命令,可以在Android机上安装Android终端模拟器  (Terminal Emulator for Android)

    Monkey输出日志

    adb shell monkey -p cn.goapk.market 100 > 路径/log.txt
    
    # adb shell 进入到手机系统
    # ls 输出手机系统的目录
    # adb shell ls 不进入手机系统,输出目录

    Monkey基本参数介绍

    -p <允许的包名列表>
        用此参数指定一个或多个包。指定包之后,monkey将只允许系统启动指定的app。如果指定包列表, monkey将允许系统启动设备中的所有app。
        指定一个包:adb shell monkey -p cn.goapk.market 100    (进行100个动作,事件是随机的)
        指定多个包:adb shell monkey -p fishjoy.control.menu  –p cn.goapk.market 100  
    -v 
        用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下 表所示: 
        Level 0  :  adb shell monkey -p cn.goapk.market -v 100               // 缺省值,仅提供启动提示、测试完成和最终结果等少量信息   
        Level 1  :  adb shell monkey -p cn.goapk.market -v  -v 100          // 提供较为详细的日志,包括每个发送到Activity的事件信息
        Level 2  :  adb shell monkey -p cn.goapk.market -v  -v  -v 100     // 最详细的日志,包括了测试中选中/未选中的Activity信息
    -s(随机数种子)
        用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的。  
        示例:
        monkey测试1:adb shell monkey -p cn.goapk.market –s 10 100                
        monkey测试2:adb shell monkey -p cn.goapk.market –s 10 100  
        如果 -s一样,那么日志结果就一样,可以用来重现操作过程
    --throttle <毫秒>
        用于指定用户操作(即事件)间的时延,单位是毫秒;如果指定这个参数,monkey会尽可能快的 生成和发送消息。
        示例:adb shell monkey -p cn.goapk.market --throttle 3000 100   
    注解:

    事件是由多个动作组成的,

    Monkey日志分析

    --pct-touch <percent>
    调整触摸事件的百分比(触摸事件是一个down-up事件,它发生在屏幕上的某单一 位置)。
    
    --pct-motion <percent>
    调整动作事件的百分比(动作事件由屏幕上某处的一个down事件、一系列的伪随机事 件和一个up事件组成)。
    
    --pct-pinchzoom <percent>
    缩放事件百分比
    
    --pct-trackball <percent>
    调整轨迹事件的百分比(轨迹事件由一个或几个随机的移动组成,有时还伴随有点击)。
    
    --pct-rotation <percent>
    屏幕旋转事件百分比
    
    --pct-nav <percent>
    调整“基本”导航事件的百分比(导航事件由来自方向输入 设备的up/down/left/right组成)。
    
    --pct-majornav <percent>
    调整“主要”导航事件的百分比(这些导航事件通常引发图 形界面中的动作,如:回退按键、菜单按键)
    
    --pct-syskeys <percent>
    调整“系统”按键事件的百分比(这些按键通常被保留,由 系统使用,如Home、Back、Start Call、End Call及音量控制键)。
    
    --pct-appswitch <percent>
    调整启动Activity的百分比。在随机间隔里,Monkey将执行一个startActivity()调 用,作为最大程度覆盖包中全部Activity的一种方法。
    
    --pct-flip <percent>
    键盘翻转事件百分比
    
    --pct-anyevent <percent>
    调整其它类型事件的百分比。它包罗了所有其它类型的事件,如:按键、其它不常用的设备按钮、等等。
    正常情况
    如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成
    - 异常情况
    Monkey 测试出现错误后,一般的分析步骤
    看Monkey的日志 (注意第一个swith以及异常信息等)
    1. 程序无响应的问题: 在日志中搜索 “ANR”
    2. 崩溃问题:在日志中搜索 “Exception”   (如果出现空指针, NullPointerException)  肯定是有bug
    Monkey 执行中断, 在log最后也能看到当前执行次数

    像素概念与怎么测

    像素概念以及怎么测图片

  • 相关阅读:
    Sass
    将100以内同时能被3和5整除的数输出
    Html小插件
    微信小程序一些demo链接地址
    .net MVC4一个登陆界面加验证
    Zeu.js
    Google 开发的、最好用、功能最强大的网页测速与网站性能分析工具
    .net基本面试题
    C#简单的九九乘法表
    请编程实现一个冒泡排序算法
  • 原文地址:https://www.cnblogs.com/st998/p/13809207.html
Copyright © 2020-2023  润新知