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自动化测试相关推荐

  1. python自动输入验证码_python下的自动化测试--selenium 验证码输入问题

    之前一直在研究scrapy下数据抓取,在研究ajax数据抓取时碰巧研究了一下selenium,确实很实用,不过只做scrapy下的数据抓取,不怎么合适,一是性能的损耗,一直需要开一个浏览器,二是对于爬 ...

  2. python自动操作微信_Python + Appium 自动化操作微信入门

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云,作者:Python小二 简介 Appium 是一个开源的自动 ...

  3. python自动测试p-python网络爬虫之自动化测试工具selenium[二]

    @ 前言 hello,大家好,在上章的内容里我们已经可以爬取到了整个网页下来,当然也仅仅就是一个网页. 因为里面还有很多很多的标签啊之类我们所不需要的东西. 额,先暂且说下本章内容,如果是没有丝毫编程 ...

  4. python自动测试相机_OpenCV-Python 相机校准 | 四十九

    目标 在本节中,我们将学习 由相机引起的失真类型, 如何找到相机的固有和非固有特性 如何根据这些特性使图像不失真 基础 一些针孔相机会给图像带来明显的失真.两种主要的变形是径向变形和切向变形. 径向变 ...

  5. python自动操作微信_Python + Appium 自动化操作微信

    环境 本文主要环境如下: Win10 JDK1.8 Appium Python3.7 android-sdk mumu 模拟器 JDK 下载地址:https://www.oracle.com/java ...

  6. python自动测试ping IP

    python自动测试ping IP,将不通的IP保存到txt中. # -*- coding: utf-8 -*- # @Time : 2023/3/6 9:14 # @Author : JulyLi ...

  7. python自动测试p-Python自动化测试

    什么是自动化测试? 自动化测试,一般是指软件测试的自动化.自动化测试是把以人为驱动的测试转化为机器执行的一种过程.实际上自动化测试就是用自动化测试工具代替手工测试,即是模拟手工测试,从而利用所写脚本执 ...

  8. python自动测试模型_Selenium+Python 自动化测试模型

    学习Selenium+Python,最终的目的是为了实现自动化测试的操作. 前面几篇文章,详细介绍了搭建环境.如何准确定位测试对象以及几个常用web 控件的脚本使用,基本可以实现关于网站的登录.注册等 ...

  9. python支付宝蚂蚁森林_Python+appium自动化实例(一):使用Python3+appium实现自动收取支付宝蚂蚁森林能量...

    注:仅用作自动化实践研究,请勿滥用 一.环境搭建 1.下载安装appium.在官网http://appium.io/ 下载appium安装包,并进行安装. 2.安装Android SDK.可直接在(h ...

最新文章

  1. php云人才系统调用,PHP云人才系统3.0正式发布
  2. Android运行出现“java.io.IOException: 您的主机中的软件放弃了一个已建立的连接。”...
  3. C#中JSON序列化和反序列化
  4. python max函数_Python max内置函数详细介绍
  5. delphi ttabcontrol 顺序_健身指南健身训练,这样安排顺序更有效哦!
  6. apache实验报告 linux_Linux实验报告
  7. setResult详解
  8. MySQL中常见的函数常见的问题
  9. jdbc增删改查_JDBC和MyBaits之争,Debug告诉你谁更胜一筹
  10. Atitit. C# java 的api 目录封装结构映射总结
  11. vb杨辉三角代码编写_杨辉三角怎样用VB写杨辉三角的完整代码 – 手机爱问
  12. Mybatis3全面详解
  13. 万字长文:AWS如何跨越“鸿沟”
  14. 剪切蒙版与抠图的结合
  15. find -regex
  16. 如何写一篇给天使投资人看的《商业计划书》?
  17. 《Information Management:A Proposal》读后感
  18. JS 将手机号中间四位变为****号的四种方式
  19. spring史上最全笔记
  20. 将qlv格式的视频转成MP4格式的视频

热门文章

  1. buffer cache 内存管理物理结构纯干货
  2. Error: Cannot retrieve metalink for repository: epel.
  3. python3_04.循环函数
  4. AES加密例子(python和php版本)
  5. php+flash实现转盘抽奖(加源代码)
  6. django之orm的高级操作以及xcc安全攻击
  7. 面向对象编程引入“人狗大战”小游戏
  8. python3 列表生成式
  9. IOS8-人机界面指南
  10. [翻译] ZCSHoldProgress