美文网首页
Android-多指截图压力测试

Android-多指截图压力测试

作者: 崔某 | 来源:发表于2021-08-30 16:16 被阅读0次
# -*- coding: utf-8 -*-
# @Time    : 2021/7/22 18:01
# @File    : ThreeScreenShot.py
"""
    三指截图-压力测试
"""

from time import sleep
from appium.webdriver.common.multi_action import MultiAction
from appium.webdriver.common.touch_action import TouchAction
from appium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException
from selenium.webdriver.support.wait import WebDriverWait


class ThreeScreenShot(object):

    def __init__(self, android_version, package_name, activity_name):
        """
        :param android_version: 安卓版本
        :param package_name:    启动包名
        :param activity_name:   启动Activity名
        """
        desired_caps = {
            'platformName': 'Android',  # 平台名称
            'deviceName': 'test',  # 设备名称(任写)
            'platformVersion': android_version,  # 安卓版本
            'appPackage': package_name,  # 启动包名
            'appActivity': activity_name,  # 启动 Acclivity
            'noReset': True,  # 重置(不会保留之前的启动数据)
            'newCommandTimeout': 60000  # 超时时间(一分钟)
        }
        if android_version == "11":
            # Android 11 添加此参数
            desired_caps["automationName"] = "uiautomator2"
        # 开始初始化
        print("Appium 正在初始化...")
        # 启动服务/通过4723端口来建立一个会话
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
        # 隐式等待15s
        self.driver.implicitly_wait(15)
        # 获取屏幕宽度
        self.window_width = self.driver.get_window_size()['width']
        # 获取屏幕高度
        self.window_height = self.driver.get_window_size()['height']
        print("Appium 初始化完成...")

    # 等待元素
    def wait_element(self, way, value, timeout=10, poll_frequency=0.5):
        """
        :param way:         定位方式
        :param value:       值
        :param timeout:     超时时长(s)
        :param poll_frequency: 刷新频率(s)
        :return:
        """
        try:
            if way == "text":
                WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll_frequency).until(
                    lambda x: x.find_element_by_android_uiautomator('new UiSelector().text("%s")' % value),
                    message=f'【text:{value}】等待超时')
            elif way == "id":
                WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll_frequency).until(
                    lambda x: x.find_element_by_id(value), message=f'【id:{value}】等待超时')
            elif way == "desc":
                WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll_frequency).until(
                    lambda x: x.find_element_by_accessibility_id(value), message=f'【desc:{value}】等待超时')
            # xpath参数示例://*[@text="xxx"]
            elif way == "xpath":
                WebDriverWait(self.driver, timeout=timeout, poll_frequency=poll_frequency).until(
                    lambda x: x.find_element_by_xpath(value), message=f'【xpath:{value}】等待超时')
            else:
                raise TypeError(f"无此定位元素方式:{way},定位方式支持:text/id/desc/xpath")
        except TimeoutException:
            raise

        # 查找元素

    def find_element(self, way, value):
        """
        :param way:     定位方式
        :param value:   值
        :return:    返回元素
        """
        try:
            if way == "text":
                # return self.driver.find_element_by_name(value)   已经凉了
                return self.driver.find_element_by_android_uiautomator('new UiSelector().text("%s")' % value)
            elif way == "id":
                return self.driver.find_element_by_id(value)
            elif way == "desc":
                return self.driver.find_element_by_accessibility_id(value)
            # xpath参数示例://*[@text="xxx"]
            elif way == "xpath":
                return self.driver.find_element_by_xpath(value)
            else:
                raise TypeError(f"无此定位元素方式:{way},定位方式支持:text/id/desc/xpath")
        except NoSuchElementException:
            raise

    def scr(self):
        action1 = TouchAction(self.driver)  # 第一个手势
        action2 = TouchAction(self.driver)  # 第二个手势
        action3 = TouchAction(self.driver)  # 第三个手势
        zoom_action = MultiAction(self.driver)
        action1.press(x=self.window_width/4, y=self.window_height/5).move_to(x=self.window_width/4, y=self.window_height*3/5).wait(200).release()
        action2.press(x=self.window_width*2/4, y=self.window_height/5).move_to(x=self.window_width*2/4, y=self.window_height*3/5).wait(200).release()
        action3.press(x=self.window_width*3/4, y=self.window_height/5).move_to(x=self.window_width*3/4  , y=self.window_height*3/5).wait(200).release()
        zoom_action.add(action1, action2, action3)  # 加载
        zoom_action.perform()  # 执行
        sleep(1)


if __name__ == '__main__':
    threeScreenShot = ThreeScreenShot("11", "com.android.settings", "com.android.settings.Settings")
    driver = threeScreenShot.driver
    driver.keyevent(3)
    for i in range(10):
        threeScreenShot.scr()
        try:
            # 由于无法截取图片的缩略图,这里采用坐标点
            driver.tap([(750, 100)])
            threeScreenShot.wait_element("text", "保存")
            threeScreenShot.find_element("text", "保存").click()
            print(f"第{1+i}次截屏成功!")
        except TimeoutException:
            print(f"第{1+i}次截屏失败!")
            driver.keyevent(3)
    threeScreenShot.wait_element("text", "电话")
    threeScreenShot.driver.quit()

相关文章

  • Android-多指截图压力测试

  • ab+jenkins非高并发的压测

    序言 首先聊一下对于我来说压力测试的目的:压力测试和性能测试不一样,它是指测试系统的内存、CPU、磁盘网络IO在接...

  • 测试的阶段和种类

    性能测试、压力测试、负载测试、强度测试、稳定性测试、健壮性测试、功能测试、接口测试……,这么多眼花缭乱的测试类型名...

  • iOS-Main -性能测试和异步测试

    前言:我们根据上一篇,继续这一篇单元的性能测试和异步测试,其实我写的东西截图多一些,因为,我在截图上添加了很多注释...

  • 在线测试网站并发压力统计工具

    一个很简单就能测试网站并发压力工具,只需要输入网址和并发数量。 点击测试后实时会返回并发结果数据,具体使用截图效果...

  • 性能测试和压力测试

    性能测试和压力测试 什么是压力测试 软件压力测试和软件性能测试是不同的,区别在于测试的目的 软件压力测试是为了发现...

  • Android-九宫格解锁压力测试

  • 现场调试纪要

    top命令 压力测试 检查客户端连接是否满,等待状态 服务端数据库连接池 连接状态 挂起 内存截图,反应

  • Android Studio 视图结构

    1、Tools->Android->Layout Inspector2、Tools->Android->Andro...

  • 测试驱动开发总结

    第25章 压力循环 压力越大、测试越少。测试越少,错误越多。错误越多,压力越大 压力越大、自动测试越多。自动测试越...

网友评论

      本文标题:Android-多指截图压力测试

      本文链接:https://www.haomeiwen.com/subject/utroiltx.html