python利用appium实现手机APP自动化的示例

针对这个话题,我将给出以下完整攻略:

准备工作

  • 安装 Python3 环境
  • 安装 appium-python-client 库 pip install Appium-Python-Client
  • 安装 Android SDK, 并配置 ANDROID_HOME 环境变量
  • 安装 JDK, 并配置 JAVA_HOME 环境变量
  • 在手机上安装待测试的 APP
  • 在电脑上安装 Appium Server

代码实现

在这里我们以一个简单的登录示例为例,假设待测试的 APP 为一个登录界面,需要输入用户名和密码,然后 click 登录按钮,最后验证是否成功登录。以下是代码实现过程:

from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

caps = {
    "platformName": "Android",
    "deviceName": "your_device_name",
    "appPackage": "your_app_package_name",
    "appActivity": "your_app_activity_name"
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

# 登录流程
username_input = driver.find_element_by_id("username_input_id")
password_input = driver.find_element_by_id("password_input_id")
login_btn = driver.find_element_by_id("login_btn_id")

username_input.send_keys("your_username")
password_input.send_keys("your_password")
login_btn.click()

# 验证登录结果
locator = (By.ID, "login_success_mark_id")
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(locator))
assert driver.find_element(*locator).text == "登录成功"

driver.quit()

以上代码中 caps 表示测试手机的一些信息,其中 platformName 表示测试平台为 Android;deviceName 表示指定测试机器名;appPackageappActivity 表示待测试 APP 的包名和启动 Activity。在实际使用时,需要将这些信息修改为相应的值。

在登录流程中,首先查找用户名、密码、登录按钮的对应元素;然后分别输入用户名和密码,最后点击登录按钮。接下来等待登录结果。

验证登录结果时,首先定义一个定位器,表示登录成功与否的标志元素,然后使用 WebDriverWait 等待元素可见,最后检查元素的文本内容是否正确,如果正确则表示登录成功。

示例说明

示例 1

假设待测试 APP 为微信,需要实现一个自动添加好友的例子。其中登录界面需要输入微信账号和密码,登录成功后自动进入主界面,然后进入添加好友界面,输入待添加好友的微信号,最后点击验证并添加按钮。

from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

caps = {
    "platformName": "Android",
    "deviceName": "your_device_name",
    "appPackage": "com.tencent.mm",
    "appActivity": ".ui.LauncherUI"
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

# 登录微信
username_input = driver.find_element_by_id("username_input_id")
password_input = driver.find_element_by_id("password_input_id")
login_btn = driver.find_element_by_id("login_btn_id")

username_input.send_keys("your_wechat_name")
password_input.send_keys("your_wechat_password")
login_btn.click()

# 进入以下界面
driver.find_element_by_id("main_page_id").click()
driver.find_element_by_id("discover_tab_id").click()
driver.find_element_by_id("add_friends_btn_id").click()

# 添加好友
driver.find_element_by_id("wechat_id_input_id").send_keys("your_friend_wechat_id")
driver.find_element_by_id("verify_and_add_btn_id").click()

# 验证添加结果
locator = (By.ID, "add_success_mark_id")
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(locator))
assert driver.find_element(*locator).text == "添加成功"

driver.quit()

以上代码中,caps 需要将 appPackage 修改为待测试 APP 的包名,appActivity 修改为待测试 APP 的启动 Activity。之后就进行流程测试。

示例 2

假设待测试 APP 为支付宝,需要实现一个自动转账的例子。其中登录界面需要输入支付宝账号和密码,登录成功后自动进入主界面,然后进入转账界面,输入待转账人的账号、转账金额、转账备注等信息,最后点击确定按钮进行转账。

from appium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

caps = {
    "platformName": "Android",
    "deviceName": "your_device_name",
    "appPackage": "com.eg.android.AlipayGphone",
    "appActivity": "com.eg.android.AlipayGphone.AlipayLogin"
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)

# 登录支付宝
username_input = driver.find_element_by_id("username_input_id")
password_input = driver.find_element_by_id("password_input_id")
login_btn = driver.find_element_by_id("login_btn_id")

username_input.send_keys("your_alipay_name")
password_input.send_keys("your_alipay_password")
login_btn.click()

# 进入以下界面
driver.find_element_by_id("transfer_tab_id").click()
driver.find_element_by_id("to_account_input_id").send_keys("your_friend_account")
driver.find_element_by_id("amount_input_id").send_keys("10")
driver.find_element_by_id("remark_input_id").send_keys("happy birthday!")
driver.find_element_by_id("ok_btn_id").click()

# 验证转账结果
locator = (By.ID, "transfer_success_mark_id")
WebDriverWait(driver, 10).until(EC.visibility_of_element_located(locator))
assert driver.find_element(*locator).text == "转账成功"

driver.quit()

以上代码中,caps 需要将 appPackage 修改为待测试 APP 的包名,appActivity 修改为待测试 APP 的启动 Activity。之后就进行流程测试。

以上是 Python 利用 Appium 实现手机 APP 自动化的完整攻略,同时给出两个简单的示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python利用appium实现手机APP自动化的示例 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • python字典序问题实例

    下面我将为你详细讲解“Python字典序问题实例”的完整攻略。 什么是字典序? 字典序是字符串比较的一种方式,其规则如下: 比较每个字符串的第一个字符,如果不同则比较其ASCII码值的大小关系; 如果第一个字符相同,则继续比较下一个字符,直到所有字符都比较完为止; 如果一个字符串被比较完了,而另一个字符串还有未比较的部分,则未比较的部分比已比较的部分大。 P…

    python 2023年5月13日
    00
  • ios基于UICollectionView实现横向瀑布流

    下面我会详细讲解如何基于UICollectionView实现横向瀑布流。 步骤一:创建UICollectionViewFlowLayout子类 首先,我们需要创建一个UICollectionViewFlowLayout子类,并且在该子类中实现自定义的布局。我们需要实现的方法包括: -prepareLayout 方法:在该方法中,我们需要计算出每个item的f…

    python 2023年6月3日
    00
  • 详解用 python-docx 创建浮动图片

    下面详细讲解如何使用 python-docx 创建浮动图片。 1. 安装 python-docx 首先要确保已经在计算机上安装了 Python。然后,使用以下命令在命令行或终端中安装 python-docx: pip install python-docx 2. 导入必要的库 在创建浮动图片之前,需要导入一些必要的库: from docx import Do…

    python 2023年6月3日
    00
  • Python 使用指定的网卡发送HTTP请求的实例

    在Python中,我们可以使用requests库发送HTTP请求。有时候,我们需要使用指定的网卡发送HTTP请求,以确保请求从正确的网络接口发送。本文将介绍如何在Python中使用指定的网卡发送HTTP请求,并提供两个示例代码。 方法1:使用requests库发送HTTP请求并指定网卡 使用requests库发送HTTP请求并指定网卡是Python中最常用的…

    python 2023年5月15日
    00
  • 熵值法原理及Python实现的示例详解

    熵值法原理及Python实现的示例详解 本文主要介绍熵值法原理及其在Python中的实现过程。熵值法是一种较为常用的多维数据分析方法,它的原理是通过求解各个维度的熵值,来判断各个因素对结果的影响程度。 熵值法原理 熵值法是基于信息熵理论的一种数据分析方法。在熵值法中,我们首先需要对待分析的各个因素进行归一化处理,然后计算出每个因素的熵值。熵值越大表示这个因素…

    python 2023年5月19日
    00
  • 使用python爬取B站千万级数据

    下面我来为您详细讲解“使用python爬取B站千万级数据”的完整攻略。 引言 B站是一家知名的弹幕视频网站,拥有海量的视频资源。如果您是一名数据分析师,想要进行B站数据分析,那么获取B站数据就成为了必备的一部分。本文就是为大家介绍如何使用Python爬虫获取B站数据。 工具准备 本文涉及到以下工具: Python 3.x pymongo (Python的Mo…

    python 2023年6月6日
    00
  • Nodejs 中文分词常用模块用法分析

    Nodejs 中文分词常用模块用法分析 一、概述 中文分词是 NLP 中的重要任务之一,Nodejs 中文分词模块则是在 Nodejs 环境下具有处理中文分词的能力的模块,常用的中文分词模块包括:nodejieba、node-segment、segment、hanlp、thulac 等。本文将主要介绍 nodejieba 和 node-segment 这两款…

    python 2023年5月13日
    00
  • kafka-python:使用 SASL_SSL + SCRAM-SHA-512 时在接收期间重置连接

    【问题标题】:kafka-python: Connection reset during recv when using SASL_SSL + SCRAM-SHA-512kafka-python:使用 SASL_SSL + SCRAM-SHA-512 时在接收期间重置连接 【发布时间】:2023-04-07 18:04:01 【问题描述】: 我正在使用 ka…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部