appium自动化基础总结

---恢复内容开始---

断断续续学了2周appium自动化,把经常用到基础写出来吧!方便日后便于查看。

appium解决中文无法输入和,启动app自动清除数据的问题。在前置代码里面加上这3句就可以解决。

desired_caps = {

    "unicodeKeyboard": "True",  # 使用unicode输入法    "resetKeyboard": "True",    # 重置输入法到初始状态   "noReset": "True",         # 解决启动app自动清除数据的问题,加这句让app启动不清除原有数据
}

安装apk到手机

driver.install_app("D:\\download\\38193ab216f29fdc9243bd8c39b65f95.apk")   #后面跟apk路径

移除appdriver.remove_app(‘com.ibox.calculators‘)       #参数填包名
判断app是否安装在手机上,参数填包名result = driver.is_app_installed(‘com.ibox.calculators‘)
获取当前页面的文档结构,用来做断言print(driver.page_source)

断言元素是否存在页面中
if ‘更多‘ in driver.page_source:    print(‘成功,存在‘)else:    print(‘错误,不存在‘)

隐式等待
driver.implicitly_wait(30)

获取包名和appActivity

1,先打开获取包名的app2,adb shell3, dumpsys activity | grep mFocusedActivity 获取到包名和appActivity

获取屏幕大小
size = driver.get_window_size()
定位方法截图:

后续补充的代码
# todo 实现appium1.9版本自动登录美逛的功能
from appium import webdriver
import time

class OpenMg():
    ‘‘‘自动登录美逛app‘‘‘

    def __init__(self):
        ‘‘‘打开APP及初始化工作‘‘‘
        desired_caps = {
            "platformName": "Android",
            "platformVersion": "5.1",
            "deviceName": "127.0.0.1:62001",
            "appPackage": "com.xk.span.zutuan",
            "appActivity": ".module.main.ui.activity.MainActivity",
            # "appWaitActivity": ".module.main.ui.activity.MainActivity",
            "unicodeKeyboard": "True",  # todo 屏蔽键盘,解决appium不能输入中文的问题
            "resetKeyboard": "True",
             "noReset":"True"     # todo 启动app时不要清除app里的原有的数据
        }
        self.driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub‘, desired_caps)
        self.driver.implicitly_wait(30)

    def slide_pafe(self):
        ‘‘‘实现界面滑动的功能‘‘‘

        # todo swipe参数说明,(x轴起始位置,y轴起始,x轴结束,y轴结束,最后一个参数是滑动速度,可不填)
        ‘‘‘
        # todo 从下往上滑,起始y1比结束坐标y2大,差距越大,滑动距离越大,
        # TODO 从上往下滑,起始y1比结束坐标y2小,差距越大,滑动距离越大
        # todo 从左往右滑,起始x1比结束坐标x2大,差距越大,滑动距离越大
        # TODO 从右往左滑,起始x1比结束坐标x2小,差距越大,滑动距离越大
        ‘‘‘
        # 滑动首页图片进入首页
        for i in range(4):
            self.driver.swipe(972, 386, 108, 386, 500)
        self.driver.implicitly_wait(30)
        self.driver.find_element_by_class_name(‘android.widget.ImageView‘).click()
        self.driver.implicitly_wait(30)
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/image_canclePlay‘).click()
        self.driver.implicitly_wait(30)

    def register_page(self):
        ‘‘‘由注册切换到输入账号界面‘‘‘
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/tv_tab_txt4‘).click()
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/stv_user_un_login‘).click()
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/stv_login_mobile‘).click()

    def input_account(self, phone, password):
        ‘‘‘输入账号密码到首页界面‘‘‘
        self.phone = phone
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/et_mobile‘).send_keys(phone)
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/password‘).click()
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/et_password‘).send_keys(password)
        self.driver.find_element_by_xpath(‘//*[@text="登录"]‘).click()
        time.sleep(0.3)

    def switch(self):
        ‘‘‘首页切换到个人中心‘‘‘
        self.driver.find_element_by_xpath(‘//*[@text="个人中心"]‘).click()
        time.sleep(0.3)

    def finally_result(self):
        ‘‘‘断言结果是否正确,账号是否在当前元素界面‘‘‘
        if self.phone in self.driver.page_source:
            print(‘账号正确,登录成功‘)
        else:
            print(‘账号错误,登录失败‘)

    def click_exit(self):
        ‘‘‘点击退出,清理登录信息‘‘‘
        self.driver.implicitly_wait(30)
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/iv_user_logout‘).click()
        self.driver.implicitly_wait(30)
        self.driver.find_element_by_xpath(‘//*[@text="确定"]‘).click()
        time.sleep(1)

    def closed(self):
        ‘‘‘关闭驱动对象‘‘‘
        time.sleep(1)
        self.driver.quit()

def run1():
    ‘‘‘根据操作顺序,调用方法执行‘‘‘
    mg = OpenMg()
    mg.slide_pafe()
    mg.register_page()
    mg.input_account(‘1582‘, ‘mg123456‘)
    mg.switch()
    mg.finally_result()
    mg.click_exit()
    mg.closed()

class SearchGoods(OpenMg):
    ‘‘‘搜索商品‘‘‘

    def input_goods(self, content):
        ‘‘‘操作搜索框及输入商品搜索‘‘‘
        self.content = content
        self.driver.find_elements_by_class_name(‘android.widget.TextView‘)[0].click()
        self.driver.implicitly_wait(30)
        self.driver.find_element_by_xpath(‘//*[@text="搜索关键词或粘贴淘宝标题"]‘).send_keys(self.content)
        time.sleep(0.5)
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/tv_search_submit‘).click()
        # self.driver.swipe(108, 1800, 108, 200, 500)
        # self.driver.swipe(108, 200, 108, 800, 500)
        time.sleep(1)

    def finally_result(self):
        ‘‘‘断言结果是否正确,账号是否在当前元素界面‘‘‘
        if self.content in self.driver.page_source:
            print(‘搜索商品正确,测试成功‘)
        else:
            print(‘搜索商品错误,测试失败‘)
        self.driver.implicitly_wait(30)

        # super().closed()

    def home_pege(self):
        ‘‘‘搜索界面返回到首页‘‘‘
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/iv_back‘).click()
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/iv_back‘).click()

def run2():
    ‘‘‘根据操作顺序调用方法执行‘‘‘
    sg = SearchGoods()
    sg.slide_pafe()
    sg.register_page()
    sg.input_account(‘158‘, ‘mg123456‘)
    sg.input_goods(‘短袖‘)
    sg.finally_result()
    sg.home_pege()
    sg.switch()
    sg.click_exit()
    sg.closed()

class Filter_Goods(SearchGoods):
    ‘‘‘筛选商品‘‘‘

    def filter(self,price1,price2):
        ‘‘‘对筛选框的操作‘‘‘
        self.driver.implicitly_wait(30)
        self.driver.find_element_by_xpath(‘//*[contains(@text,"筛选")]‘).click()
        self.driver.find_element_by_xpath(‘//*[contains(@text,"最低价")]‘).send_keys(price1)
        self.driver.find_element_by_xpath(‘//*[contains(@text,"最高价")]‘).send_keys(price2)
        self.driver.implicitly_wait(30)
        self.driver.find_element_by_id(‘com.xk.span.zutuan:id/ok‘).click()

def run3():
    fg = Filter_Goods()
    fg.slide_pafe()
    fg.register_page()
    fg.input_account(‘1582‘, ‘mg123456‘)
    fg.input_goods(‘书包‘)
    fg.filter(30,100)
    fg.finally_result()
    fg.home_pege()
    fg.switch()
    fg.click_exit()
    fg.closed()

def main():
    run1()
    run2()
    run3()

if __name__ == ‘__main__‘:
    main()

原文地址:https://www.cnblogs.com/xiamaojjie/p/11442336.html

时间: 2024-11-09 15:42:23

appium自动化基础总结的相关文章

Python自动化基础【第一篇】:目录

本系列博文包含 Python基础.前端开发.Web框架.缓存以及队列等,希望可以给正在学习编程的童鞋提供一点帮助!!! Python自动化基础[第一篇]:目录 Python自动化基础[第二篇]:初识Python Python自动化基础[第三篇]:Python基本数据类型 Python自动化基础[第四篇]:Python基础之函数 Python自动化基础[第五篇]:Python基础之杂货铺 Python自动化基础[第六篇]:模块 Python自动化基础[第七篇]:面向对象 Python自动化基础[第

Jmeter_接口自动化基础流程概述

1:创建一个线程组 2:添加一个cookie管理器   测试开发交流群 317765580 3:设置你的信息头管理器:application/json;text/plain;charset=UTF-8  测试开发交流群 317765580 44 4:添加一个用户参数,做全局变量使用.此处将url写成全局变量,后期只需要在此处修改url,而不需要去每一个接口中单独调整  测试开发交流群 317765580 5:添加一个默认请求值,这里的参数设置之后可以作为后期所有接口脚本模板,不需要重复填写 6:

appium自动化的工作原理(1)

用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢? 1.先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https://blog.csdn.net/jffhy2017/article/details/69220719/) Appium的加载过程 1)调用Android adb完成基本的系统操作 2)向Android上部署bootstrap.jar 3)Bootstrap.jar Forward Android的端

Appium自动化 - 设置unicodeKeyboard: True运行脚本后,手机输入时无法调出软键盘

问题背景 做appium自动化的时候,使用了UiAutomator1驱动,然后设置了UnicodeKeyboard 执行自动化脚本之后,玩手机的时候发现平时用的输入法键盘没法调出来了 'automationName': 'UiAutomator1', 'unicodeKeyboard': True 问题原因 默认的手机输入法会被appium自动切换成Unicode IME了 解决方案 很简单,将当前输入法切换成自己原来用的就行啦! 原文地址:https://www.cnblogs.com/pol

自动化基础普及之selenium是啥?

Selenium 并不像QTP那样让人一下子就明白是什么?它是编程人员的最爱,但它却对测试新手产生了很大的阻碍. Selenium 是啥? Selenium RC是啥? Webdriver 又是啥? RC 和 Webdriver 是啥关系? Webdriver 和编程语言啥关系? Selenium 能并行执行脚本嘛? Selenium 能做移动端自动化么? 这里虫师用简单方式,告诉你,他们错综复杂的关系.理顺了它们之间的关系才能真正使用它. Selenium 是什么? Selenium 是web

selenium自动化基础知识

什么是自动化测试? 自动化测试分为:功能自动化和性能自动化 功能自动化即使用计算机通过编码的方式来替代手工测试,完成一些重复性比较高的测试,解放测试人员的测试压力.同时,如果系统有不份模块更改后,只要通过修改部分代码的方式来覆盖这部分修改的内容,大大提高测试效率.但是后期代码维护需要一定的成本,如果系统属于表单比较多或者经常修改改动的系统不太适合使用自动化,因为这个维护成本太高:针对于一些相对比较成熟(改动不是很频繁)的系统和跑回归测试的系统很适合进行自动化测试. 性能自动化即使用性能测试工具(

appium自动化的一个实例

实现appium的自动化,三步走,具体如下: 第一步:启动appium的服务端: 可以通过命令行的方式启动:cmd,然后输入appium,如下图 也可以打开桌面程序appium,点击右上角的运行按钮,如下图: 第二步,写自动化脚步,我这里用eclipse写的,使用appium的java客户端,如下图: 报错是因为我没有加载相应的包,加载一下就可以了,如下图红圈里面的这些包.(记得把Junit4或者是Testng也加载一下) 我先来说一下我的这个代码,我采用了MVC框架的思想,分为业务层(M),视

appium入门基础知识

1.概念区分: 1)IOS-UIAutomation:随着iOS4.0的发布,苹果公司同时发布了一个名为UIAutomation的测试框架,它可以用来在真实设备和iPhone模拟器上执行自动化测试 学习网址:http://www.51testing.com/html/54/n-843354.html   http://www.2cto.com/kf/201212/176666.html 2)Android-UiAutomator:Google在sdk4.0以后提供了一个自动化解决方案uiauto

昨天晚上在公司内部分享了《Appium自动化》

分享的内容有: Appium原理 Appium环境搭建 ADB常用命令 常用的元素定位方法 Unittest框架 刚开始时有一点点紧张,慢慢地就不紧张了,讲解还算是比较有逻辑的,语音及语速也控制得不错.这个给自己一个大大的赞. 这是这1个月的努力,完全从门外汉慢慢摸索的结晶.不知道公司会不会继续做这个自动化,但是不管做不做吧,自己的学习还是要继续深入的,好不容易入门了,不能中途放弃. 还是希望自己时刻都保持着一颗不断学习的心,继续努力吧 原文地址:https://www.cnblogs.com/