环境:

  • Appium:1.9.1
  • Appium-desktop:1.7.1
  • Xcode:10.0
  • IOS:iPhone5S(10.3.3)
  • Mac:10.13.6

①获取手机屏幕size:长、宽

Appium Appium 1.9 版本 BUG:使用 get_window_size () 方法报错

解决办法:

# 修改路径
......\...python3.6.1-path\Lib\site-packages\selenium\webdriver\remote\remote_connection.py # 300行
# 原代码
Command.W3C_GET_WINDOW_SIZE:
('GET', '/session/$sessionId/window/size'), # 替换为
Command.W3C_GET_WINDOW_SIZE:
('GET','/session/$sessionId/window/$windowHandle/size'),

解决size报错之后:

# 获取手机屏幕长和宽
self.size = self.d.get_window_size() # 获取宽度一半
self.half_Width = self.size['width']/2 # 获取长度一半
self.half_Width = self.size['height']/2

②滑动方法:

参考:《Appium 急急急:Appium1.5.3 有没有针对 iOS 屏幕滑动的新方法,swipe 坐标滑动已经不支持了,求 Python 语言新解决方法

    def do_swipe(self,x1,y1,x2,y2):
'''
# 滑动方法
:return:
'''
self.d.execute_script("mobile: dragFromToForDuration",
{"fromX": x1, "fromY": y1, "toX": x2, "toY": y2, "duration": 0.5})

②-1:上、下、左、右,滚动方法:

driver.execute_script('mobile:scroll', {'direction': '参数'}) # 参数:down,up,right,left

②-2:另外,如果想模拟滑动轨迹,如手势解锁,可以这样(先make一下:TouchAction

# 只供参考,但是不适用于python
final TouchAction gesture = new TouchAction(driver).press(startX, stratY)
.moveTo(startX, stratY + height)
.moveTo(startX, stratY + height + height)
.moveTo(startX + width, stratY + height + height).release();
gesture.perform();

③多个相同元素定位:

打开地址:http://localhost:8100/inspector

如图这里会定位出多个相同元素的信息,如果那个appium-desktop定位不出元素,我们就采取这种方式获取属性定位。

既然找到元素属性了,那如何写代码定位呢?如下:

# 点击第一个相同元素
self.d.find_elements_by_name("home arrow news")[0].click() # 点击第二个相同元素
self.d.find_elements_by_name("home arrow news")[1].click() # 点击第三个相同元素
self.d.find_elements_by_name("home arrow news")[2].click()

只需要加上【index】角标即可。

④隐藏弹出的输入法,因为怎么试都不行,后来采取的定位背景元素,点击背景,这样就可以间接关闭输入法。

⑤判断可不可以点击元素:

参考:《Selenium2+python自动化36-判断元素存在

    def isExist(self,i):
'''
# 判断可不可以点击元素
:param i:
:return:
'''
try:
print("已选择:[%s]" % i)
self.d.find_element_by_name(i).click()
return True
except:
return False

⑤-1判断元素存不存在:

exist = self.d.find_element_by_name(i).is_enabled()
print(exist)
# True/False

⑥常用定位元素方法:

# class_name定位
self.d.find_element(By.CLASS_NAME,"XCUIElementTypeTextField") # accessibility_id定位
self.d.find_element_by_accessibility_id("login_bg_top") # name定位
self.d.find_element_by_name("home btn newtask") # xpath定位
self.d.find_element_by_xpath('//XCUIElementTypeStaticText[@name="xxx"]') # 还有其他的等等定位详情参考附录的文章

⑦点击元素

self.d.find_element_by_name("home btn newtask").click()

⑧输入值

self.d.find_element_by_accessibility_id("请输入内容").send_keys("xxx")

⑨断言

# 获取元素的值进行断言
text = self.d.find_element_by_accessibility_id("xxx").text
print(text)
self.assertEqual(text,"xxx","显示不对!")

附录:

其他appium-IOS自动化API写法参考如下:

Appium Appium Python API 中文版 By-HZJ

Python + Appium+ IOS自动化测试

Appium+Python3+iOS定位元素

appium---appium 常见API

Github:appium提问题地址

Appium之主要的元素定位疑点难点

【Mac + Appium + Python3.6学习(四)】之常用的IOS自动化测试API总结的更多相关文章

  1. 【Mac + Appium + Python3.6学习(三)】之IOS自动化测试环境配置

    在做这一节之前先配置我的另一篇文章所需要安装的前提准备条件:<[Mac + Appium学习(一)]之安装Appium环境前提准备> 一.安装IOS自动化测试环境 配置环境: Appium ...

  2. 【Mac + Appium + Python3.6学习(五)】之常用的Android自动化测试API总结

    Github测试样例地址:https://github.com/appium-boneyard/sample-code/tree/master/sample-code/examples ①定位text ...

  3. 【Mac + Appium + Python3.6学习(二)】之Android自动化测试,appium-desktop配置和简易自动化测试脚本

    上一篇文章介绍安装appium测试环境,这一片研究介绍如何测试Android自动化. 上一篇地址:<[Mac + Appium学习(一)]之安装Appium环境> 这一篇参考:<Ma ...

  4. 【Mac + Appium + Python3.6学习(六)】之安装Android模拟器(Genymotion)并运行模拟器进行自动化

    环境: MacOS:10.13.6 Virtualbox:5.2.22 Genymotion:genymotion-2.12.2 本文Virtualbox.Genymotion下载地址: 链接:htt ...

  5. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

  6. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  7. Android JNI学习(四)——JNI的常用方法的中文API

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

  8. Python3.5 学习四

    装饰器 定义:本质是函数,装饰其他函数,即为其他函数添加附加功能的 原则: 1 不能修改被装饰函数的源代码 2 不能改变被装饰函数的调用方式(对于被装饰函数来说完全透明,不会受影响) 实现装饰器功能的 ...

  9. Linux学习(四)-Linux常用命令

    1.运行级别类 1.1运行级别说明: 0:关机 1:单用户[可用于找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级 ...

随机推荐

  1. AWK 怎么读取标准输入(STDIN)

    在 awk 系列中,我们将会看到几个例子,你可以筛选其他命令的输出代替从一个文件读取输入作为 awk 的输入.我们首先从使用 dir 命令开始,它类似于 ls 命令. 在第一个例子下面,我们使用 di ...

  2. poj 1284 Primitive Roots(原根+欧拉函数)

    http://poj.org/problem?id=1284 fr=aladdin">原根 题意:对于奇素数p,假设存在一个x(1<x<p),(x^i)%p两两不同(0&l ...

  3. Java开发岗位面试题归类---怎么好好的准备面试,也算是发展学习方向

    转载:http://blog.csdn.net/qq_27093465/article/details/52181860 一.Java基础 1. String类为什么是final的. 自己找的参考答案 ...

  4. 云计算之路-试用Azure:Azure内置的负载均衡是四层的

    当初迁移至阿里云遇到的第一个问题是在程序中通过Request.UserHostAddress得到的是负载均衡(SLB)的内网IP,而不是用户的真实IP.真实IP存储在服务器变量HTTP_X_Forwa ...

  5. RxAndroid 的基本使用

    1.基本概念 Rx是RxJava针对Android的定制版本.这个版本中通过增加最少的类使在Android应用中编写响应式组件简单而且无障碍,特别之处在与它还提供了一个Scheduler,可以在主线程 ...

  6. Python监控进程性能数据并画图保存为PDF文档

    引言 利用psutil模块(https://pypi.python.org/pypi/psutil/),可以很方便的监控系统的CPU.内存.磁盘IO.网络带宽等性能參数,下面是否代码为监控某个特定程序 ...

  7. Intellij IDEA 10.5 语言设置

    适应于:英文操作系统,但是语言和区域设置为中文的环境. Mac: /Applications/IntelliJ IDEA CE.app/Contents/bin/idea.vmoptions 增加 - ...

  8. vfork & fork

    转载 http://coolshell.cn/articles/12103.html 在知乎上,有个人问了这样的一个问题——为什么vfork的子进程里用return,整个程序会挂掉,而且exit()不 ...

  9. 【微信小程序】获取轮播图当前图片下标、滑动展示对应的位数、点击位数展示对应图片

    业务需求: 3个图片轮番播放,可以左右滑动,点击指示点可以切换图片  index.wxml: 这里使用小程序提供的<swiper>组件autoplay:自动播放interval:自动切换时 ...

  10. ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS 选项

    产生这个的原因可能是由于数据库突然停止,没有来得及将缓存区中的LOG归档,导致下次开启时不能匹配日志文件. 数据库中的三个日志文件挨个试,第二个就匹配上了