详解基于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 共现矩阵的实现代码攻略。 什么是共现矩阵 共现矩阵(Co-occurrence Matrix)是描述文本中词语之间关系的一种方法。在一个文本中,如果两个不同的词语同时出现在文本中的一个窗口中,我们可以把它们之间的共现次数记录在一个共现矩阵中,从而反映它们之间的关系。因此,共现矩阵可以用来进行文本分类、聚类等任务。 Python 实现共现…

    python 2023年5月14日
    00
  • python实现各进制转换的总结大全

    Python实现各进制转换的总结大全 本文将介绍Python中实现各进制转换的方法。主要包括十进制转二进制、八进制、十六进制,以及二进制、八进制、十六进制互相转换的方法。 十进制转二进制 Python内置的函数bin()可以将十进制数转换为二进制数,并返回一个字符串表示二进制数。 示例:将十进制数65转换为二进制数 decimal_num = 65 bina…

    python 2023年6月2日
    00
  • Python HTTP客户端自定义Cookie实现实例

    Python HTTP 客户端自定义 Cookie 实现实例 在 Python 中,可以使用 requests 模块发送 HTTP 请求,并自定义 Cookie。以下是 Python HTTP 客户端自定义 Cookie 实现实例。 1. 使用 cookies 参数 在使用 requests 模块发送 HTTP 请求时,可以使用 cookies 参数来自定义…

    python 2023年5月15日
    00
  • python 字符串格式化代码

    下面是关于 Python 字符串格式化的完整攻略。 什么是字符串格式化? 字符串格式化是 Python 中一种经常使用的字符串操作,用于把一个字符串中的某些部分替换为我们想要的值,通常用于打印出一些数据。 字符串格式化的语法 在 Python 中使用字符串格式化,我们需要使用%操作符和一个字母代码来表示要格式化的值的类型。 以下是常见的占位符代码: %s:字…

    python 2023年5月18日
    00
  • Python实现的多线程端口扫描工具分享

    Python实现的多线程端口扫描工具分享 简介 Python作为一门简洁高效的编程语言,拥有广泛的应用场景,其中之一就是端口扫描。端口扫描是安全审计中常用的技术之一,是对主机进行安全检查的重要手段。本篇文章将会讲解如何使用Python来实现一个多线程的端口扫描工具。 扫描器设计 扫描器需要完成的任务是:在指定的IP地址和端口范围内扫描开放的服务,并给出相应的…

    python 2023年5月19日
    00
  • 利用Python list列表修改元素

    以下是详细讲解“利用Python list列表修改元素”的完整攻略。 在Python中,列表是一种常用的数据类型,它可以存储多个值支持各种操作。本文将详细讲解如何利用Python list列表修改元素,并提供两个示例说明。 修改元素 list列表中的元素可以通过索引进行修改。例如: lst = [1, 2, 3] lst[1] = 4 print(lst) …

    python 2023年5月13日
    00
  • python 使用多线程创建一个Buffer缓存器的实现思路

    下面是详细讲解“Python使用多线程创建一个Buffer缓存器的实现思路”的攻略。 1. 概述 在Python中,通过多线程创建一个Buffer缓存器可以提高程序的处理能力。缓存器是一种高效的技术手段,主要用于缓存应用程序所需的数据,减少网络请求或文件读取等的开销,从而提高应用程序的响应速度。 2. 实现思路 Python中可以使用queue模块来实现Bu…

    python 2023年5月18日
    00
  • 对python产生随机的二维数组实例详解

    让我们来详细讲解“对Python产生随机的二维数组实例详解”的完整攻略。 主要步骤如下: 1. 导入NumPy库 在Python程序中使用NumPy库来生成随机的二维数组。NumPy是通过Python进行科学计算的一个库,提供了一个高性能的多维数组对象,以及操作这些对象的工具。为了在Python中使用NumPy库,首先需要导入该库。 import numpy…

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