详解基于Android的Appium+Python自动化脚本编写

详解基于Android的Appium+Python自动化脚本编写攻略

一、准备工作

1. 安装必要的软件

  • Java环境:需要安装Java 1.8及以上版本,可以到官网下载安装包进行安装。
  • Android SDK:需要在Android官网下载,安装时需要确保已经配置好环境变量。
  • Appium Server:可以在 Appium 官网 下载,下载完成后双击安装即可。
  • Python 3.X:可以在Python官网下载,安装时需要将python.exe添加至Path环境变量。

2. 安装Python依赖库

使用pip命令安装以下依赖库:

pip install Appium-Python-Client
pip install unittest-xml-reporting
pip install configparser

其中Appium-Python-Client是Python下连接Appium服务的客户端库,unittest-xml-reporting是生成XML格式报告的库,configparser用于读取配置文件。

3. 设置Android环境

  • 手机/模拟器连接电脑,确保已启用开发者模式并开启USB调试。
  • 运行adb devices查看是否能够正常连接上设备/模拟器。

二、编写测试用例

  1. 在Python中导入Appium接口库和unittest测试框架:
from appium import webdriver
import unittest
  1. 编写初始化方法,连接Appium服务并建立会话连接:
class MyTestCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        desired_caps = {'platformName': 'Android',
                        'platformVersion': '9.0',  
                        'deviceName': 'xxx',
                        'appPackage': 'com.xxx.xxx',  
                        'appActivity': 'com.xxx.xxx.MainActivity',
                        'unicodeKeyboard': True,  
                        'resetKeyboard': True}
        cls.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

通过desired_caps设置设备的相关参数,包括了平台、版本、设备名、应用包名以及activity名,同时也可以设置输入法和重置输入法等。

  1. 通过find_element_by_XXX()方式定位元素进行操作:
    def test_login(self):
        self.driver.find_element_by_id('id/username').send_keys('test')
        self.driver.find_element_by_id('id/password').send_keys('123456')
        self.driver.find_element_by_id('id/login_button').click()
  1. 在tearDown()方法中销毁会话连接:
    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

三、编写测试套件

  1. 创建测试套件:
def suite():
    suite = unittest.TestSuite()
    suite.addTest(MyTestCase("test_login"))
    # 可以添加多个测试用例
    return suite
  1. 运行测试套件并生成测试报告:
if __name__ == '__main__':
    unittest.main(testRunner=xmlrunner.XMLTestRunner(output='report'))
  • testRunner:指定测试运行器,默认使用TextTestRunner运行器。
  • output:指定输出报告的目录,默认为当前目录。

四、配置文件

可以使用configparser读取配置文件,并在测试用例中引用配置项。

import configparser
config = configparser.ConfigParser()
config.read('config.ini')
url = config.get('test_server', 'url')
print(url)

示例

以下是一个例子,实现了一个简单的界面操作:

from appium import webdriver
import unittest

class MyTestCase(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        desired_caps = {'platformName': 'Android',
                        'platformVersion': '9.0',  
                        'deviceName': 'xxx',
                        'appPackage': 'com.xxx.xxx',  
                        'appActivity': 'com.xxx.xxx.MainActivity',
                        'unicodeKeyboard': True,  
                        'resetKeyboard': True}
        cls.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

    def test_login(self):
        self.driver.find_element_by_id('id/username').send_keys('test')
        self.driver.find_element_by_id('id/password').send_keys('123456')
        self.driver.find_element_by_id('id/login_button').click()

    def test_popup(self):
        self.driver.find_element_by_id('id/popup_button').click()
        popup_text = self.driver.find_element_by_id('id/popup_text').text
        self.assertEqual('This is a popup window', popup_text)

    @classmethod
    def tearDownClass(cls):
        cls.driver.quit()

def suite():
    suite = unittest.TestSuite()
    suite.addTest(MyTestCase("test_login"))
    suite.addTest(MyTestCase("test_popup"))
    return suite

if __name__ == '__main__':
    unittest.main(testRunner=xmlrunner.XMLTestRunner(output='report'))

在例子中,我们编写了两个测试用例,test_login测试用例是实现了自动登录操作,test_popup测试用例是实现了弹出窗口的操作,通过assertEqual()判断是否获取到了正确的文本。

在运行测试套件后,将会生成一个report目录,其中包含了执行测试用例的报告。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解基于Android的Appium+Python自动化脚本编写 - Python技术站

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

相关文章

  • python 模拟银行转账功能过程详解

    Python 模拟银行转账功能过程详解 介绍 在这篇攻略中,我们将介绍如何使用 Python 实现银行转账的功能。银行转账是一个常见的金融交易方式,通过模拟这个过程,可以帮助我们了解数字货币、区块链等技术。 在这个过程中,我们将会使用 Python 的基础语法、文件操作、函数等知识点,所以需要读者具备基础的 Python 编程能力。 思路 为了完成转账流程,…

    python 2023年6月2日
    00
  • Python 2.7 BeautifulSoup4 返回一个空集

    【问题标题】:Python 2.7 BeautifulSoup4 is returning an empty setPython 2.7 BeautifulSoup4 返回一个空集 【发布时间】:2023-04-01 11:16:01 【问题描述】: 我正在尝试使用 bs4 从谷歌搜索中获取链接,但我的代码返回一个空集。 import requests fr…

    Python开发 2023年4月8日
    00
  • Python logging模块进行封装实现原理解析

    Python logging模块进行封装实现原理解析 logging是Python标准库中的一个模块,用于记录日志信息。在实际应用中,我们通常需要对logging模块进行封装,以便更好地管理和使用日志信息。本文将详细讲解如何使用Python logging模块进行封装,并提供两个示例。 示例1:封装logging模块 以下是一个使用Python loggin…

    python 2023年5月15日
    00
  • Python开源自动化工具Playwright安装及介绍使用

    Python开源自动化工具Playwright是一个功能强大、易于使用的自动化测试工具。它允许开发人员使用Python编写端到端测试,并且可以与多种浏览器和操作系统进行交互。 以下是完整的攻略步骤: 1. 安装Playwright 安装Playwright需要使用pip命令: pip install playwright 此外,还需要在本地安装要进行自动化测…

    python 2023年5月19日
    00
  • Python二维数组实现求出3*3矩阵对角线元素的和示例

    Python二维数组实现求出3*3矩阵对角线元素的和示例 简介 Python中的二维数组可以使用列表嵌套列表的方式来实现。在本示例中,我们将通过Python实现3*3矩阵对角线元素的求和。本文将从以下几个方面进行介绍: 二维数组的定义和初始化 求出矩阵对角线元素的和 二维数组的定义和初始化 在Python中,二维数组可以使用列表嵌套列表的方式来实现。定义一个…

    python 2023年6月6日
    00
  • Python实现字典排序、按照list中字典的某个key排序的方法示例

    要在Python中对字典排序或按照list中字典的某个key进行排序,可以使用内置的sorted函数,该函数可以接受一个可迭代对象并返回一个排序后的列表。在排序的时候可以自定义排序方法,从而实现按照字典的某个key进行排序。 字典排序 字典按照键排序 要按照字典的键进行排序,需要提取字典的键,并根据键进行排序。示例代码如下: # 构造一个字典 d = {‘c…

    python 2023年5月13日
    00
  • 使用Python将数组的元素导出到变量中(unpacking)

    下面就是使用Python将数组的元素导出到变量中的完整攻略: 1. 使用解构赋值(unpacking)将数组的元素导出到变量中 Python中的解构赋值能够将一个序列(如列表、元组、字符串)中的元素直接解包(unpack)到一些变量中,如下所示: # 定义一个列表 fruits = [‘apple’, ‘banana’, ‘orange’] # 用解构赋值将…

    python 2023年5月14日
    00
  • python数据分析之将爬取的数据保存为csv格式

    在Python中,我们可以使用pandas库将爬取的数据保存为csv格式。本攻略将介绍如何使用pandas库将爬取的数据保存为csv格式,并提供两个示例。 1. 使用pandas库将数据保存为csv格式 使用pandas库可以将数据保存为csv格式。以下是一个示例代码,演示如何使用pandas库将数据保存为csv格式: import pandas as pd…

    python 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部