python自动测试相机_Python + Appium+ IOS自动化测试
1)搭建好Appium环境
2)拿到iOS开发APP项目文档(含***.xcodeproject文档)
3)cmd进入含.xcodeproject文档目标下利用:xcodebuild -sdk iphonesimulator命令编译iOS文档,将会在同级目录下生产build目录文件,文件中保护编写iOS自动化脚本的.app文件
4)开启Appium客户端,选择ios脚本执行,并选择刚生成.app目录下文件
5)编写Python iOS自动化脚本
6)不断调试测试脚本
'''1)锁定屏幕 driver.lock(5)2)把当前应用放到后台去 driver.background_app(5)3)在 iOS 上收起键盘 driver.hide_keyboard()4)检查应用是否已经安装 driver.is_app_installed('com.example.android.apis')5)安装应用到设备中去 driver.install_app('path/to/my.apk')6)从设备中删除一个应用 driver.remove_app('com.example.android.apis')7)模拟设备摇晃 driver.shake()8)关闭应用 driver.close_app()9)启动应用 driver.launch_app()10)应用重置 driver.reset()11)列出所有的可用上下文 driver.contexts12)列出当前上下文 driver.current_context13)将上下文切换到默认上下文 driver.switch_to.context(None)14)iOS 里是 Localizable.strings Android 里是 strings.xml driver.app_strings15)发送一个按键事件给设备 driver.keyevent(176)16)Android only 得到当前 activity driver.current_activity17)生成触摸动作的接口。这部分文档很快将会补充更多的内容进来action = TouchAction(driver)action.press(element=el, x=10, y=10).release().perform()18)模拟用户滑动 driver.swipe(75, 500, 75, 0, 1000)19)在 0% 到 100% 内双指缩放屏幕 driver.pinch(element=el)20)放大屏幕 在 100% 以上放大屏幕 driver.zoom(element=el)21)从设备中拉出文件 driver.pull_file('Library/AddressBook/AddressBook.sqlitedb')22)推送文件到设备中去data = "some data for the file"path = "/data/local/tmp/file.txt"driver.push_file(path, data.encode('base64'))'''
# -*- coding:utf-8 -*-
import unittest
import os
from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from time import sleep
import datetime
import random
class MyIOSTests(unittest.TestCase):
#开启猫宁3.0
def setUp(self):
app = os.path.join(os.path.dirname(__file__),
'/Users/xuyangting/Desktop/AttendanceAdminIOS/CloudRecord/build/Debug-iphonesimulator',
'CloudRecord.app')
app = os.path.abspath(app)
self.driver = webdriver.Remote(
command_executor='http://127.0.0.1:4723/wd/hub',
desired_capabilities={
'app': app,
'platformName': 'iOS',
'platformVersion': '8.4',
'deviceName': 'iPhone 6'
})
#引导页滑屏处理
def test_boot_page(self):
sleep(10)
self.driver.swipe(350, 300, 0, 300, 800)
#滑屏的问题暂时还没解决,心好痛,Android滑屏文档先前也是用swipe不行,后来用drag搞定了,这次ios自动化又被滑屏卡到了,真的引导页虐我千百遍,我待它如初恋
#登录猫宁3.0
def test_login(self, mobile, password):
#启动页滑屏处理
self.test_boot_page()
#登录
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIATextField[1]").send_keys(mobile)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIASecureTextField[1]").send_keys(password)
self.driver.hide_keyboard()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAButton[1]").click()
sleep(5)
#测试注册&忘记密码
def test_reg_forget_password(self):
pass
#测试查询模块
def test_query(self):
self.test_login("13133847086", "123456")
#测试按日
#测试切换时间按日查询
#测试未来时间
self.driver.find_element_by_name("query dayCircle bt").click()
self.driver.find_element_by_name("calender left arrow").click()
self.driver.find_element_by_name("01").click()
#测试过去时间
self.driver.find_element_by_name("query dayCircle bt").click()
self.driver.find_element_by_name("calender right arrow").click()
self.driver.find_element_by_name("02").click()
sleep(3)
#测试按日数据
choose = datetime.datetime.today().day
if choose == 1:
ch = "0" + str(choose)
elif choose < 10 and choose > 1:
ch = "0" + str(choose-1)
else:
ch = str(choose)
self.driver.find_element_by_name("query dayCircle bt").click()
sleep(5)
self.driver.find_element_by_name(ch).click()
sleep(3)
#测试修改考勤 旷工改成事假
self.driver.find_element_by_name("旷工").click()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATableView[1]/UIATableCell[1]").click()
self.driver.find_element_by_name("修改考勤").click()
sleep(3)
self.driver.find_element_by_name("事假").click()
self.driver.find_element_by_name("确认修改").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
sleep(3)
#刷新页面
kuang_gong = self.driver.find_element_by_name("旷工")
zheng_chang = self.driver.find_element_by_name("正常")
action = TouchAction()
action.press(kuang_gong).move_to(zheng_chang).release()
#测试按月
self.driver.find_element_by_name("按月").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
#测试选择月份
self.driver.find_element_by_name("选择月份").click()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAButton[2]").click()
#测试选择员工
self.driver.find_element_by_name("选择员工").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATableView[1]/UIATableCell[1]").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
#测试选择排序
self.driver.find_element_by_name("选择排序").click()
self.driver.find_element_by_name("按在岗时长排序").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
self.driver.find_element_by_name("按字母排序").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
#测试导出结果
self.driver.find_element_by_name("导出结果").click()
email = "407708323@qq.com"
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[4]/UIAAlert[1]/UIAScrollView[1]/UIATableView[1]/UIATableCell[1]/UIATextField[1]").send_keys(email)
self.driver.find_element_by_name("取消").click()
self.driver.find_element_by_name("导出结果").click()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[4]/UIAAlert[1]/UIAScrollView[1]/UIATableView[1]/UIATableCell[1]/UIATextField[1]").send_keys(email)
self.driver.find_element_by_name("好").click()
sleep(5)
#测试查看详情
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATableView[1]/UIATableCell[1]/UIAStaticText[5]").click()
sleep(3)
self.driver.find_element_by_name("查看异常").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATableView[1]/UIATableCell[2]/UIAStaticText[5]").click()
sleep(3)
self.driver.find_element_by_name("查看异常").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
#测试管理模块
def test_manage(self):
self.test_login("13133847086", "123456")
positions = []
positions.append((180, 630))
self.driver.tap(positions)
#测试公司员工
sleep(3)
#测试添加员工
self.driver.find_element_by_name("添加").click()
sleep(3)
self.driver.find_element_by_name("添加员工").click()
sleep(3)
#测试通讯录导入请在真机测试,模拟器通讯录无联系人
#测试手动添加
self.driver.find_element_by_name("手动添加").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATextField[1]").send_keys("1234567")
phone_number = random.choice(["139", "131", "158"]) + "".join(random.choice("0123456789") for i in range(8))
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATextField[2]").send_keys(phone_number)
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_name("默认工作制").click()
self.driver.find_element_by_name("完成").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
#测试拨打电话请在真机测试
self.driver.find_element_by_name("1234567").click()
self.driver.find_element_by_name("phone icon").click()
self.driver.find_element_by_name("取消").click()
sleep(3)
#测试授权绑定手机请在真机测试
self.driver.find_element_by_name("manage auth bt").click()
self.driver.find_element_by_name("取消").click()
self.driver.find_element_by_name("manage auth bt").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
#测试编辑
self.driver.find_element_by_name("manage edit bt").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATextField[1]/UIAButton[1]").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATextField[1]").send_keys("7654321")
self.driver.find_element_by_name("保存").click()
sleep(3)
#测试删除员工
self.driver.find_element_by_name("manage delete bt").click()
self.driver.find_element_by_name("取消").click()
self.driver.find_element_by_name("manage delete bt").click()
self.driver.find_element_by_name("确认").click()
sleep(3)
#测试工作制
self.driver.find_element_by_name("工作制").click()
sleep(3)
self.driver.find_element_by_name("添加").click()
sleep(3)
#测试添加工作制
self.driver.find_element_by_name("添加工作制").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATextField[1]").send_keys("7654321")
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAButton[1]").click()
sleep(3)
self.driver.find_element_by_name("周六").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAButton[2]").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_name("完成").click()
sleep(3)
#测试编辑工作制
self.driver.find_element_by_name("7654321").click()
sleep(3)
self.driver.find_element_by_name("编辑").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATextField[1]").send_keys("654321")
self.driver.find_element_by_name("确定").click()
sleep(3)
#测试查看该工作制下的员工
self.driver.find_element_by_name("查看该工作制下的员工").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
#测试为员工分配该工作制
self.driver.find_element_by_name("为员工分配该工作制").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATableView[1]/UIATableCell[1]").click()
self.driver.find_element_by_name("确认").click()
sleep(3)
self.driver.find_element_by_name("查看该工作制下的员工").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
sleep(3)
#测试删除工作制
self.driver.find_element_by_name("删除").click()
self.driver.find_element_by_name("取消").click()
self.driver.find_element_by_name("删除").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
self.driver.find_element_by_name("默认工作制").click()
sleep(3)
self.driver.find_element_by_name("为员工分配该工作制").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATableView[1]/UIATableCell[1]").click()
self.driver.find_element_by_name("确认").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIATableView[1]/UIATableCell[1]").click()
sleep(3)
self.driver.find_element_by_name("删除").click()
self.driver.find_element_by_name("确定").click()
sleep(3)
#测试更多模块
def test_more(self):
self.test_login("13133847086", "123456")
positions = []
positions.append((310, 630))
self.driver.tap(positions)
#测试修改密码
self.driver.find_element_by_name("修改密码").click()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIASecureTextField[1]").send_keys("123456")
self.driver.find_element_by_name("下一步").click()
sleep(3)
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIASecureTextField[1]").send_keys("123456")
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIASecureTextField[2]").send_keys("123456")
self.driver.find_element_by_name("完成").click()
sleep(3)
#测试注销
self.driver.find_element_by_name("注销").click()
self.driver.find_element_by_name("取消").click()
self.driver.find_element_by_name("注销").click()
self.driver.find_element_by_name("确定").click()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIASecureTextField[1]").send_keys("123456")
self.driver.hide_keyboard()
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAButton[1]").click()
sleep(5)
self.driver.tap(positions)
#测试绑定猫宁智能终端
self.driver.find_element_by_name("绑定猫宁智能终端").click()
self.driver.find_element_by_name("绑定").click()
sleep(3)
#模拟器不能开启相机,请真机测试
self.driver.find_element_by_xpath("//UIAApplication[1]/UIAWindow[2]/UIATextField[1]").send_keys("123456")
self.driver.find_element_by_name("绑定").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
#测试用户指南
#测试关于
self.driver.find_element_by_name("关于").click()
sleep(3)
self.driver.find_element_by_name("backNavi bt").click()
#调试
def test(self):
self.test_boot_page()
#关闭猫宁3.0
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(MyIOSTests("test_reg_forget_password"))
suite.addTest(MyIOSTests("test_query"))
suite.addTest(MyIOSTests("test_manage"))
suite.addTest(MyIOSTests("test_more"))
#suite.addTest(MyIOSTests("test"))
unittest.TextTestRunner(verbosity=2).run(suite)
python自动测试相机_Python + Appium+ IOS自动化测试相关推荐
- python自动输入验证码_python下的自动化测试--selenium 验证码输入问题
之前一直在研究scrapy下数据抓取,在研究ajax数据抓取时碰巧研究了一下selenium,确实很实用,不过只做scrapy下的数据抓取,不怎么合适,一是性能的损耗,一直需要开一个浏览器,二是对于爬 ...
- python自动操作微信_Python + Appium 自动化操作微信入门
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:Python小二 简介 Appium 是一个开源的自动 ...
- python自动测试p-python网络爬虫之自动化测试工具selenium[二]
@ 前言 hello,大家好,在上章的内容里我们已经可以爬取到了整个网页下来,当然也仅仅就是一个网页. 因为里面还有很多很多的标签啊之类我们所不需要的东西. 额,先暂且说下本章内容,如果是没有丝毫编程 ...
- python自动测试相机_OpenCV-Python 相机校准 | 四十九
目标 在本节中,我们将学习 由相机引起的失真类型, 如何找到相机的固有和非固有特性 如何根据这些特性使图像不失真 基础 一些针孔相机会给图像带来明显的失真.两种主要的变形是径向变形和切向变形. 径向变 ...
- python自动操作微信_Python + Appium 自动化操作微信
环境 本文主要环境如下: Win10 JDK1.8 Appium Python3.7 android-sdk mumu 模拟器 JDK 下载地址:https://www.oracle.com/java ...
- python自动测试ping IP
python自动测试ping IP,将不通的IP保存到txt中. # -*- coding: utf-8 -*- # @Time : 2023/3/6 9:14 # @Author : JulyLi ...
- python自动测试p-Python自动化测试
什么是自动化测试? 自动化测试,一般是指软件测试的自动化.自动化测试是把以人为驱动的测试转化为机器执行的一种过程.实际上自动化测试就是用自动化测试工具代替手工测试,即是模拟手工测试,从而利用所写脚本执 ...
- python自动测试模型_Selenium+Python 自动化测试模型
学习Selenium+Python,最终的目的是为了实现自动化测试的操作. 前面几篇文章,详细介绍了搭建环境.如何准确定位测试对象以及几个常用web 控件的脚本使用,基本可以实现关于网站的登录.注册等 ...
- python支付宝蚂蚁森林_Python+appium自动化实例(一):使用Python3+appium实现自动收取支付宝蚂蚁森林能量...
注:仅用作自动化实践研究,请勿滥用 一.环境搭建 1.下载安装appium.在官网http://appium.io/ 下载appium安装包,并进行安装. 2.安装Android SDK.可直接在(h ...
最新文章
- php云人才系统调用,PHP云人才系统3.0正式发布
- Android运行出现“java.io.IOException: 您的主机中的软件放弃了一个已建立的连接。”...
- C#中JSON序列化和反序列化
- python max函数_Python max内置函数详细介绍
- delphi ttabcontrol 顺序_健身指南健身训练,这样安排顺序更有效哦!
- apache实验报告 linux_Linux实验报告
- setResult详解
- MySQL中常见的函数常见的问题
- jdbc增删改查_JDBC和MyBaits之争,Debug告诉你谁更胜一筹
- Atitit. C# java 的api 目录封装结构映射总结
- vb杨辉三角代码编写_杨辉三角怎样用VB写杨辉三角的完整代码 – 手机爱问
- Mybatis3全面详解
- 万字长文:AWS如何跨越“鸿沟”
- 剪切蒙版与抠图的结合
- find -regex
- 如何写一篇给天使投资人看的《商业计划书》?
- 《Information Management:A Proposal》读后感
- JS 将手机号中间四位变为****号的四种方式
- spring史上最全笔记
- 将qlv格式的视频转成MP4格式的视频