Appium+Python UI自动化框架
import datetime
from appium.webdriver.common.touch_action import TouchAction
from appium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from selenium.webdriver.support.wait import WebDriverWait
class TestDemo:
def setup(self):
caps = {}
caps["platformName"] = "Android"
caps["plathformVersion"] = "版本"
caps["deviceName"] = "系统名称"
caps["appPackage"] = "包名"
caps["appActivity"] = "应用程序"
caps["autoGrantPermissions"] = True
caps["unicodeKeyboard"] = True #输入中文
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub',caps)
self.driver.implicitly_wait(10)#隐式等待
def test_demo(self):#首次同意弹窗
el1 = self.driver.find_element(By.ID, "")
el1.click()
def loaded(driver):#判断是否存在客户端弹窗,有则关闭无则跳过
print(datetime.datetime.now())
if len(self.driver.find_elements(By.ID,''))>=1:
self.driver.find_element(By.ID,'').click()
return True
else:
return False
try:
WebDriverWait(self.driver,10).until(loaded)
except:
print("没有广告弹窗")
#点击我的
el1 = self.driver.find_element(By.ID,"")
el1.click()
#登录
el1 = self.driver.find_element(By.ID,"")
el1.click()
sleep(1)
#点击账号输入框
el1 = self.driver.find_element(By.ID,"")
el1.send_keys("15296707948")
#输入验证码
el1 = self.driver.find_element(By.ID,"")
el1.send_keys("9797")
#勾选同意按钮
el1 = self.driver.find_element(By.ID,"")
el1.click()
#点击登录
el1 = self.driver.find_element(By.ID,"")
el1.click()
sleep(2)
print("~~~~~~~~~登录成功!!~~~~~~~~~~")
def teardown(self):
self.driver.quit()
以上是关于自动化脚本的大概轮廓,下面会列举一些关于写脚本的过程中遇到的一些总结。随时会补充!
1)获取APP入口---appium连接手机时必传的参数
adb logcat | grep -i displayed
备注:mac本可以直接在命令窗口中输入命令来获取,windows本需要在git bash中输入命令获取
2)清理App的缓存,使在测试的时候保证环境时干净的
adb shell pm clear com.audio.tingting
3)函数名词解释:pree 按下、release 释放、move_to 移动/滑动、long_pree 长按
4)页面向上滑动 ---这样可以避免在滑动时先点击元素后再去拖动,导致如果页面元素均为热区会优先实现对应的点击功能
el1=self.driver.find_element(By.XPATH,'xxxx')
el2=self.driver.find_element(By.XPATH,'xxxx')
self.driver.drag_and_drop(el1, el2)#定位底部位置和顶部位置后向上滑动
Appium+Python UI自动化框架的更多相关文章
- (appium+python)UI自动化_09_unittest批量运行测试用例&生成测试报告
前言 上篇文章[(appium+python)UI自动化_08_unittest编写测试用例]讲到如何使用unittets编写测试用例,并执行测试文件.接下来讲解下unittest如何批量执行测试文件 ...
- (appium+python)UI自动化_01_自动化环境搭建【MAC版】
Appium简介 Appium是一个开源的.跨平台的测试框架,主要用来进行app UI自动化,适用于原生应用.混合应用和移动网页应用(H5页面).目前支持Python.JavaScript.Objec ...
- (appium+python)UI自动化_08_unittest编写测试用例
前言 unittest是python自带的单元测试框架,类似于Junit(Java单元测试框架).支持自动化测试,可编写测试前置&后置条件,并且可批量运行测试用例并生成测试报告. 使用unit ...
- (appium+python)UI自动化_07_app UI自动化实例【叮咚搜索加车为例】
前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以叮咚买菜app-搜索加车为实例,展示下appium是 ...
- (appium+python)UI自动化_02_appium启动手机app
前提:需先安装配置好appium+python自动化环境,已配置好环境的小伙伴可以参考以下步骤启动Android app,具体步骤如下: 一.USB连接手机 (1)手机USB连接电脑 (2)手机打开开 ...
- (appium+python)UI自动化_03_元素定位工具
前言 在UI自动化过程中,需要对手机app上的元素进行定位,然后进一步编写自动化脚本操作app.定位元素首先需要定位工具来辅助查看页面元素.小编常用的定位工具有2种,分别是uiautomatorvie ...
- (appium+python)UI自动化_10_adb常用命令
前言 adb(Android Debug Bridge)工具是android-sdk里的一个工具,是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互.在app自动化测试过程中,有时要用到adb命 ...
- 基于PO和单例设计模式用python+selenium进行ui自动化框架设计
一)框架目录的结构 二)config包当中的config.ini文件主要是用来存项目的绝对路径,是为了后续跑用例和生成测试报告做准备然后目前的配置文件大都会用yaml,ini,excel,还有.py也 ...
- 基于Python3 + appium的Ui自动化测试框架
UiAutoTest 一.概要 数据驱动的Ui自动化框架 二.环境要求 框架基于Python3 + unittest + appium 运行电脑需配置adb.aapt的环境变量,build_tools ...
- ui自动化笔记 selenium_webdriver,ui自动化框架(web)
Selenium学习笔记 selenium webdriver是业界公认ui自动化测试的标准,其封装的api可以对浏览器的任何地方进行操作 selenium2.0和selenium3.0的区别? 3. ...
随机推荐
- 3DMAX安装失败怎么办?安装3DMAX失败提示错误怎么解决?
3DMAX安装失败怎么办?安装3DMAX失败提示错误怎么解决?有很多同学想把3DMAX卸载后重新安装,但是发现3DMAX安装到一半就失败了或者显示3DMAX已安装或者安装未完成,大多数情况下其实是3D ...
- VsCode C++ 语法检测失效不标红色波浪线 解决办法
如果enable Squiggles 无效,按照下图里配置设置解决问题. 如图:
- 微信退费报错:SSLHandshakeException No appropriate protocol (protocol is disabled or cipher suites are inappropr)
微信退费报错:No appropriate protocol (protocol is disabled or cipher suites are inappropr) javax.net.ssl.S ...
- 第一个helloworld程序
; hello.asm section .data msg db "hello, world",13,10,0 section .bss section .text global ...
- C++的右值引用是左值,rvalue reference is lvalue.
参考: https://stackoverflow.com/questions/28483250/rvalue-reference-is-treated-as-an-lvalue
- (K8s学习笔记三)创建Namespace
Namespace(命名空间)很多情况下用于实现多租户的资源隔离.Namespace通过将集群内部的资源对象"分配"到不同的Namespace中,形成逻辑上分为不同项目.小组或用户 ...
- layui踩坑记
1)layui 中选择项里面的文字内容比较多,输入框的宽度不够,需求方要求扩大宽度到现在的2倍. 从网上搜索到的方法都是通过修改上一层的DIV的宽度来实现,修改之后大概的代码大概是这样的 <di ...
- mybatis-关联查询4-多对多查询
三张表的关联查询
- re的finditer()
在前面学习了findall()函数,它可以一次性找到多个匹配的字符串,但是不能提供所在的位置,并且是一起返回的,如果有数万个一起返回来,就不太好处理了,因此要使用finditer()函数来实现每次只返 ...
- 2347. 最好的扑克手牌 (Easy)
问题描述 2347. 最好的扑克手牌 (Easy) 给你一个整数数组 ranks 和一个字符数组 suit .你有 5 张扑克牌,第 i 张牌大小为 ranks[i] ,花色为 suits[i] . ...