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

yizhihongxing

详解基于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中的第三方库方法的完整攻略。 1.安装pip工具 要使用豆瓣源安装Python第三方库,必须首先安装pip工具。pip是Python的默认包管理器,它可以方便的帮助我们安装、卸载、升级Python包。 1.1 Windows平台 在…

    python 2023年5月14日
    00
  • python3通过gevent.pool限制协程并发数量的实现方法

    python3通过gevent.pool限制协程并发数量的实现方法 在Python中,使用gevent库实现协程并发是一个常见的需求。以下是一个示例,介绍了如何使用gevent.pool限制协程并发数量。 示例一:使用gevent.pool限制协程并发数量 以下是一个示例,使用gevent.pool限制协程并发数量: import gevent from g…

    python 2023年5月15日
    00
  • Selenium之模拟登录铁路12306的示例代码

    下面是“Selenium之模拟登录铁路12306的示例代码”的完整攻略,包含示例说明: 简介 Selenium是目前很流行的测试自动化工具,可以通过代码驱动模拟一个用户的操作,例如打开网页、点击按钮、输入文本等。本文将展示如何使用Selenium模拟登录铁路12306。 步骤 安装Selenium和浏览器驱动 首先需要安装Selenium库和浏览器驱动,例如…

    python 2023年6月3日
    00
  • 在Python中执行cmd

    在Python中执行CMD,需要借助Python标准库中提供的subprocess模块。subprocess模块允许我们新建子进程,在其中执行一个外部命令,并在Python中获取该命令的输出结果。下面是在Python中执行CMD命令的完整攻略,包含两个示例说明。 1. 使用subprocess.run()函数执行CMD命令 subprocess.run()函…

    python 2023年5月30日
    00
  • python实现自动更换ip的方法

    下面是Python实现自动更换IP的方法的完整攻略: 概述 如果我们在进行网络爬虫等网络操作时,需要使用代理IP来实现一些操作,但是常规的代理IP可能会被封禁或者不稳定,造成操作失败的情况,因此我们需要一种方法来实现自动更换代理IP的操作。本文将讲解如何使用Python实现自动更换IP的方法。 步骤 获取代理IP池:我们需要先获取一些稳定的代理IP池,以便于…

    python 2023年5月19日
    00
  • pygame实现时钟效果

    下面是关于用Pygame实现时钟效果的完整攻略,包含了步骤、代码示例和详细说明。 步骤 导入Pygame库。因为本文所讲的内容涉及到窗口绘图操作,所以需要用到Pygame库。 python import pygame 初始化Pygame。在继续之前,需要对Pygame进行初始化。 python pygame.init() 设定窗口大小。根据自己的需要,设定窗…

    python 2023年6月2日
    00
  • 对Python _取log的几种方式小结

    对Python _取log的几种方式小结 在Python中,我们可以使用标准数学库中提供的log函数来计算数字的对数。下面是一些常见的通过log函数获取对数的方式: 1. math库中的log函数 Python内置的math库提供了一个log函数,可以计算自然对数。你可以通过以下语句在你的代码中调用: import math x = 10 log_x = m…

    python 2023年6月3日
    00
  • Python 3.x 判断 dict 是否包含某键值的实例讲解

    下面是Python3.x判断dict是否包含某键值的实例讲解: 问题描述 判断一个字典(dict)是否包含某个指定的键(key),或者是否包含某个指定的键值对(key-value pair)。 解决方案 对于判断字典是否包含某个指定的键,可以使用Python的in操作符来实现。具体代码如下: # 定义一个字典 my_dict = {‘name’: ‘John…

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