老板叫我写个APP自动化--方法二次封装--01点击输入

简介: 老板叫我写个APP自动化--方法二次封装--01点击输入

前言

这里是清安,前一章我们学习了简单的脚本输出,本章我们来将脚本优化优化,可能有一定的难度,但是跟着一步步来,多码几遍问题不大。本章我们直接使用类来编写自动化脚本,也就是所谓的封装。

简简单单的封装

from appium import webdriver
from time import sleep
class San:
    def __init__(self,desired_capas):
        self.ap = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capas)
    def login(self):
        self.ap.find_element_by_id('com.mxchip.project352:id/etPhone').send_keys('18674622237')
        self.ap.find_elements_by_class_name('android.widget.EditText')[1].send_keys('jx123456')
        self.ap.find_element_by_id('com.mxchip.project352:id/cbAgree').click()
                self.ap.find_element_by_xpath('//*[@text="登录"]').click()
if __name__ == '__main__':
    desired_capas = {
        "deviceName": "emulator-5554",
        "platformName": "Android",
        "appPackage": "com.mxchip.project352",
        "appActivity": "com.mxchip.project352.activity.login.LoginActivity",
        "platformVersion": "7.1.2",
        "noReset": "True"
    }
    San(desired_capas).login()

如上所示,代码中就是封装了的方法了,对比上一章的简单脚本,你是不是觉得,这样写它的好处,作用在哪。如你所想,此处并没有体现出太多的优点,好处出来。试图往下想想,步骤多了之后也只是显的比较的整洁而已。

此处主旨并不是极大程度的优化代码,而是要告诉你,如何封装一个脚本,后续在框架上,这种封装思想就会突显的格外的重要。

再次改进

我们再次对上面的进行改进一下,上面的看着~没太多感觉,复用性不高,从代码量上看,我们可以再缩减一些。我们将上述类直接变成一个方法容器,专门放入一些方法进去,供我们调用。一起来看看吧。

# ----清安—---
# 微信:qing_an_an
# 公众号:测个der
from appium import webdriver
from selenium.webdriver.common.by import By
class San:
    def __init__(self, desired_capas):
        self.ap = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_capas)
    def element_(self, loc, ele, num=None):
        if num:
            return self.ap.find_elements(loc, ele)[num]
        else:
            return self.ap.find_element(loc, ele)
    def clicks_(self,loc, ele, num=None):
        if num:
            self.element_(loc, ele, num).click()
        else:
            self.element_(loc, ele).click()
    def inputs_(self, loc, ele, value, num=None):
        if num:
            self.element_(loc, ele, num).send_keys(value)
        else:
            self.element_(loc, ele).send_keys(value)
if __name__ == '__main__':
    desired_capas = {
        "deviceName": "emulator-5554",
        "platformName": "Android",
        "appPackage": "com.mxchip.project352",
        "appActivity": "com.mxchip.project352.activity.login.LoginActivity",
        "platformVersion": "7.1.2",
        "noReset": "True"
    }
    i = San(desired_capas)
    i.inputs_(By.ID, 'com.mxchip.project352:id/etPhone', 'qing_an_an')
    i.inputs_(By.CLASS_NAME, 'android.widget.EditText', 'jx123456', 1)
    i.clicks_(By.ID,'com.mxchip.project352:id/cbAgree')
    i.clicks_(By.XPATH,'//*[@text="登录"]')

这里对于初学者或许有些许的复杂,这就是二次封装了,将webdriver里的一些原有的方法,再次写一个类出来,方便自己调用。此外,这里我也没有用上两章所讲的元素方法了,这里用的selenium中的方法。没有安装的可以安装一下。pip install selenium==3.14。selenium的一些方法在appium中依然适用,比如说显示等待、上述例子中所写的方法,只要是支持都可以使用。如果没有name属性,你非得要用,那就显的有点无药可救了。上述的方法没有什么特殊的写法,结合了if-else做了一个判断,因为这里不想写太多的类似的方法了。当然你也可以拆开来写:

def clicks_(self,loc, ele, num):
            self.element_(loc, ele, num).click()
    def click_(self,loc, ele):
            self.element_(loc, ele).click()

上述只是举例,同时也希望能以此,举一反三。

最后说一下传值后的走向,例如i.inputs_(By.ID, 'com.mxchip.project352:id/etPhone', 'qing_an_an')

通过类调用了inputs_方法,他会进行一个判断,看时候存在num值,如果传值了那么就会走if,如果没有则会走else,看示例明显没有num,所以,我们走的else,进入到else后继续调用element_方方法,同样的道理,进行判断,传值,并且放回这个方法给到inputs_方法,执行后面的操作,例如我们需要输入值,那么执行send_keys方法。或许你在跑代码的过程中会遇到元素无法操作或者元素找不到的情况,不慌,下一章就会讲到。

目录
相关文章
|
5天前
|
测试技术 UED Python
App自动化测试:高级控件交互技巧
Appium 的 Actions 类支持在移动应用自动化测试中模拟用户手势,如滑动、长按等,增强交互性测试。ActionChains 是 Selenium 的概念,用于网页交互,而 Actions 专注于移动端。在Python中,通过ActionChains和W3C Actions可以定义手势路径,例如在手势解锁场景中,先点击设置,然后定义触点移动路径执行滑动解锁,最后验证解锁后的元素状态。此功能对于确保应用在复杂交互下的稳定性至关重要。
40 5
|
5天前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
23 1
|
5天前
|
XML 存储 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第11天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试策略,它允许测试人员通过外部数据源控制测试用例的输入和输出。这种方法促进了测试用例的参数化,并提高了测试的灵活性和可维护性。本文将探讨数据驱动测试的核心概念、实施步骤以及使用Python进行数据驱动测试的实践案例,旨在为读者提供一种结构化的方法来设计和执行复杂的测试场景。
|
5天前
|
开发框架 前端开发 Android开发
专刊:随着技术进步,未来在线生成App将有更多可能性,为移动应用开发带来便利
【4月更文挑战第27天】在数字化时代,移动App变得不可或缺,而在线生成App的技术正逐渐兴起,为开发者提供快捷创建移动应用的途径。本文探讨了网页到App的转变过程,介绍了WebView嵌入、混合式开发框架和云端打包技术等方法,以及在线生成App的步骤、优势和挑战。虽然存在性能和功能限制,但随着技术进步,未来在线生成App将有更多可能性,为移动应用开发带来便利。
|
3天前
|
存储 XML 测试技术
深入理解自动化测试中的数据驱动方法
【5月更文挑战第17天】 在软件测试领域,数据驱动测试(DDT)是一种高效的测试方法,它允许测试人员通过外部数据源来控制测试用例的执行。这种方法的核心在于将测试逻辑与测试数据分离,使得测试案例可以简单地通过改变输入数据集来扩展和复用。本文旨在探讨数据驱动测试的原理、实施策略及其在实际项目中的应用效果,以期为读者提供一种提高测试效率和质量的有效手段。
|
3天前
|
安全 前端开发 开发工具
什么是APP封装?流程和实现方式是什么,有什么优势?
APP封装是将应用程序的代码、资源和依赖项打包成一个可执行的文件或安装包的过程。封装过程中,将应用的代码、资源和依赖项进行整合,并生成一个独立的安装包,用户只需下载并安装该包即可使用应用。
16 3
|
5天前
|
测试技术
使用 Playwright 复用 Cookie:简化自动化测试的高效方法
Playwright 提供的 Cookie 复用功能允许在不同测试用例间共享会话状态,提高测试效率。通过 `context.set_cookies()` 方法设置共享 Cookie 数据,确保会话在多个测试中保持一致。优点包括节省时间、维持稳定会话,但需注意可能增加测试用例间的依赖。使用此功能可优化自动化测试流程。
6 1
|
5天前
|
Android开发
Android APP 隐藏系统软键盘的方法
Android APP 隐藏系统软键盘的方法
35 0
|
5天前
|
存储 测试技术 数据库
深入理解自动化测试中的数据驱动方法
【5月更文挑战第7天】 在快速发展的软件行业中,为了提升测试效率和测试覆盖率,自动化测试已经成为一个不可或缺的部分。数据驱动测试(DDT)是一种独特的自动化测试方法,它允许分离测试逻辑和测试数据,从而使得测试案例可以更加灵活和有效地进行管理。本文将探讨数据驱动测试的核心概念、实施步骤及其在实际应用中的优势与挑战。通过对多个案例的分析,我们旨在提供一个全面的指南,帮助软件测试人员理解和运用数据驱动方法以优化他们的自动化测试策略。
|
5天前
|
前端开发
【专栏】在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法
【4月更文挑战第29天】本文介绍了在 create-react-app 中集成 less/sass 预处理器和 react-css-modules 的方法。首先,通过 `npm` 安装 less 或 sass 依赖,然后修改 `config-overrides.js` 配置文件以支持 less/sass 编译。接着,详细阐述如何使用 less/sass 编写样式。再者,安装 react-css-modules 并配置 webpack,使能样式模块化。最后,展示了如何结合使用 less/sass 和 react-css-modules,以提升前端开发的效率和代码质量。

热门文章

最新文章