一分钟教你Android、iOS如何实现自动化截长图功能,超实用!

简介: 在移动端自动化测试过程中经常会遇到需要截长图的场景,比如大促活动的H5页面、动态信息流页面等,但是目前在网上检索只能搜到关于截长图的软件推荐,没有讲关于如何通过自动化脚本的方式实现的文章,今天就来给大家分享一个简单的实现方案。

方案


在实现截长图的自动化方案中,图像融合是一个重要的环节,这里推荐大家一个不错的图像融合服务:vision-ui


服务部署

该服务支持源代码和docker容器两种方式部署,这里我以容器部署方式为例,首先肯定是需要有Docker环境,然后下载远程镜像:

docker pull brighthai/vision-ui:latest

启动容器,如果本地需要处理的图像文件在/User/image(根据实际替换为实际路径)本地使用的服务端口为9092,执行如下命令启动容器:

docker run -it -d --name container_vision -p 9092:9092 -v /User/image:/vision/capture brighthai/vision-ui


Android


先安装依赖:

pip install requestspip 
install pillow

我们只需要在设备上获得连续的几张截图,就可以还原页面的实际空间展示,这里我们在页面上截图后向上滑动25%屏幕长度的距离再截图,重复上述步骤后获得几张前后连续的图像,然后调用上面的服务接口完成图像融合,具体实现如下:

import os
import time
import requests
from PIL import Image
def get_long_screenshot(times):
    image_list = []
    server_addr = '/Users/mafei/images'
    img = str(int(time.time() * 1000)) + ".png"
    os.system('adb shell screencap -p /sdcard/{0}'.format(img))
    os.system('adb pull /sdcard/{0}'.format(img))
    img_obj = Image.open(img)
    width = img_obj.width
    height = img_obj.height
    # 开始截图,向上滑动25%
    for i in range(times):
        img_name = str(int(time.time() * 1000)) + ".png"
        os.system('adb shell screencap -p /sdcard/{0}'.format(img_name))
        os.system('adb pull /sdcard/{0} {1}'.format(img_name, server_addr))
        image_list.append(img_name)
        x1 = int(width * 0.5)
        x2 = int(width * 0.5)
        y1 = int(height * 0.5)
        y2 = int(height * 0.25)
        os.system('adb shell input swipe {0} {1} {2} {3} 900'.format(x1, y1, x2, y2))
    image_merged = "image_merge_{0}.png".format(str(int(time.time() * 1000)))
    payload = {
        "image_list": image_list,
        "name": image_merged
    }
    headers = {
        'Content-Type': 'application/json; charset=UTF-8'
    }
    requests.request("post", url="http://127.0.0.1:9092/vision/merge", timeout=10, json=payload, headers=headers)
    image_merged = server_addr + "/" + image_merged
    return image_merged
get_long_screenshot(3)


iOS


iOS的自动化方案相比Android稍微有点麻烦,需要先在iOS设备上安装WebDriverAgent,具体如何在iOS真机安装WebDriverAgent,可以参考文章《iOS真机安装WebDriverAgent图文详解》。


这里我们默认大家已经给设备安装好了WDA,并且通过Xcode或者xcodebuild启动了WebDriverAgent,那么接下里只需要再安装一些依赖:

pip install requests
pip install pillow
pip install airtest

实现iOS自动化的方式有很多,这里我们选择Airtest框架来完成UI的驱动,具体代码如下:


import os
import time
import requests
from PIL import Image
from airtest.core.api import swipe, connect_device
def get_ios_long_screenshot(times):
    connect_device("ios:///169.254.66.2:8100")
    image_list = []
    server_addr = '/Users/mafei/images'
    # 获取设备长宽
    img = str(int(time.time() * 1000)) + ".png"
    os.system("tidevice screenshot {0}".format(img))
    img_obj = Image.open(img)
    width = img_obj.width
    height = img_obj.height
    # 开始截图,向上滑动25%
    for i in range(times):
        img_name = str(int(time.time() * 1000)) + ".png"
        os.system("tidevice screenshot {0}/{1}".format(server_addr, img_name))
        image_list.append(img_name)
        x1 = int(width * 0.5)
        x2 = int(width * 0.5)
        y1 = int(height * 0.5)
        y2 = int(height * 0.25)
        swipe((x1, y1), (x2, y2))
    image_merged = "image_merge_{0}.png".format(str(int(time.time() * 1000)))
    payload = {
        "image_list": image_list,
        "name": image_merged
    }
    headers = {
        'Content-Type': 'application/json; charset=UTF-8'
    }
    requests.request("post", url="http://127.0.0.1:9092/vision/merge", timeout=10, json=payload, headers=headers)
    image_merged = server_addr + "/" + image_merged
    return image_merged
get_ios_long_screenshot(3)


效果


Android

滑动3次的过程如下:

image.png

最终融合的效果如下:

微信图片_20220519185903.jpg

iOS

滑动3次的过程如下:

微信图片_20220519185908.jpg

最终融合效果如下:

image.png


相关文章
|
5月前
|
安全 数据挖掘 Android开发
Cellebrite UFED 4PC 7.72 (Windows) - Android 和 iOS 移动设备取证软件
Cellebrite UFED 4PC 7.72 (Windows) - Android 和 iOS 移动设备取证软件
354 2
Cellebrite UFED 4PC 7.72 (Windows) - Android 和 iOS 移动设备取证软件
|
11月前
|
JavaScript 前端开发 Android开发
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
409 13
【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
9月前
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
11月前
|
安全 Android开发 数据安全/隐私保护
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
570 12
Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
|
11月前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
443 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
11月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
520 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
11月前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
1574 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
3月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
355 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章