appium自动化测试---压测机器人自动回充

前言:下面描述了一个简单的appium自动化测试,在结合现在工作任务,进行一个简单的自动化程序;包含了自动化测试环境的配置和一个简单的appium自动测试列子;

一、自动化环境搭建

详细的安装步骤请查看Appium安装及环境配置

1. 安装python

1、打开Python官网https://www.python.org/,点击Download,下载最新版本的Python。(Note:我用的是Python 3.10.11)
2、安装时记得第一个页面勾选"Add python to PATH",点击"install now",当出现successful时即安装完成。
3、安装完成之后,在cmd中输入"python",如果能看到Python的版本号就说明安装成功。

2.安装pycharm

打开pycharm官网,点击download会跳转到安装页面,下载免费的community社区版。 双击安装。

3.安装jdk

1、从官网下载最新jdk版本
2、下载完之后双击安装
3、配置环境变量

4.安装sdk

下载android sdk sdk下载地址

5.安装node

1、下载node.js官网地址
2、选择SDK Tools,在Windows中选择安装包下载
3、检查是否安装成功
在终端输入adb version,出现如图所示信息便表示安装成功

6.安装appium server

  1. 下载安装客户端(window)

桌面客户端官网地址
按照安装引导下一步到完成

  1. 命令版安装(支持window、mac、linux)

1、下载
(1)默认安装最新版本
npm install -g appium
(2)指定安装版本
npm install -g [email protected]
2、检查安装结果
运行cmd,输入
appium --version
若正常显示版本信息,则appium环境安装成功;

7、安装Appium-Python-Client

1、cmd输入
pip install Appium-Python-Client
2.如果从官方的资源库下载Appium-Python-Client失败,请自行更换下载源重新下载。
在命令行输入
pip install Appium-Python-Client -i http://pypi.douban.com/simple

二、代码

下面是appium连接机器人,使用元素定位来定位按钮,在进行点击

# 导入所需模块
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.common.touch_action import TouchAction
from appium.webdriver.extensions.android.nativekey import AndroidKey
from appium.webdriver.common.mobileby import MobileBy as AppiumBy
from selenium.webdriver.support.wait import WebDriverWait

# 连接参数
desired_caps = {
    
    
    "platformName": "Android", #移动平台名称
    "appium:automationName": "uiautomator2", #自动化框架或者库
    "appium:deviceName": "192.168.3.6", #连接设备的名称
    "appium:appPackage": "cn.mrobot.web.hermes", #测试应用的app的包名
    "appium:adbExecTimeout": 600000, #ADB命令执行超时时间
    "appium:uiautomator2ServerInstallTimeout": 600000, #设置UIAutomator2服务器安装超时时间,以毫秒为单位。
    "appium:appActivity": ".MainActivity", #指定应用的启动Activity。可以通过查看应用的AndroidManifest.xml文件获取
    "appium:ensureWebviewsHavePages": True, #设置为True以确保所有webview都已加载页面,False则不进行等待,默认为False
    "appium:nativeWebScreenshot": True, #设置为True以使用本机截图功能进行截图,False则使用Appium自己的截图功能,默认为False。
    "appium:newCommandTimeout": 3600, #设置命令超时时间,以秒为单位。
    "appium:connectHardwareKeyboard": True, #设置为True以允许硬件键盘输入,False则禁用,默认为False。
    "appium:noReset": True #设置为True以保留应用的数据和状态,False则每次运行测试时重置应用,默认为False。
}

# # 连接appium server,初始化自动化环境
# driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
#连接appium server ,不初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps, initialize=False)


# 自定义异常类,用于表示步骤执行异常
class StepException(Exception):
    def __init__(self, step, button_text):
        self.step = step
        self.button_text = button_text

    def __str__(self):
        return f"Step '{
      
      self.step}': Button '{
      
      self.button_text}' did not get clicked."


# 自定义函数来查找并点击按钮
def find_and_click_button(driver, button_class_name, button_text):
    try:
        # 查找按钮元素
        buttons = WebDriverWait(driver, 10).until(
            lambda drv: drv.find_elements(by=AppiumBy.CLASS_NAME, value=button_class_name)
        )
        for button in buttons:
            if button.text == button_text:
                button.click()
                return

        raise StepException("find_and_click_button", button_text)  # 若没有找到按钮,抛出自定义异常

    except Exception as e:
        print(f"Error: {
      
      e}")
        raise


# 输入密码
def enter_password(driver, password):
    try:
        for digit in password:
            find_and_click_button(driver, "android.view.View", digit)

        raise StepException("enter_password", password)  # 引发自定义异常,表示密码输入未成功

    except Exception as e:
        print(f"Error: {
      
      e}")
        raise


# 调用示例
try:
    # 点击“我要下单”
    find_and_click_button(driver, "android.widget.Button", "我要下单")

    # 点击“输入密码”
    find_and_click_button(driver, "android.view.View", "输入密码")

    # 点击“bill测区发货166”
    find_and_click_button(driver, "android.view.View", "bill测区发货166")

    # 输入密码"100893"
    enter_password(driver, '100893')

    # 点击确认
    find_and_click_button(driver, "android.view.View", "确认")

except StepException as e:
    print(e)

上述代码中由于运行的时候总是点击不到一些按钮,就加了一个异常,对于没有点击到的元素就抛出一个异常并打印输出

三、adb连接机器人

前期准备:
1、机器人上的屏幕需要进入开发者模式,打开adb调试
2、连接机器人的WiFi,使用无线连接

  1. 打开终端,输入
adb connect 192.168.3.6:5555

若出现连接错误,请看adb connect连接设备出现offline

  1. 查看连接设备
adb devices

总结

1、自动环境的搭建感谢大佬的分享,我也是“借花献佛”;
2、代码部分也存在很多为实现的问题,暂时先记录一下学习的过程,后续继续更新;
3、如有问题,大家请指出;

猜你喜欢

转载自blog.csdn.net/m0_44993010/article/details/131127886
今日推荐