Appium自学笔记(二)--Appium API

相关链接

Android 元素定位方法:https://testerhome.com/topics/8256

Android 元素操作相关,也包含定位方法:https://www.cnblogs.com/zihanxing/p/7055065.html

Webdriver.Remote链接地址如何配置:https://www.cnblogs.com/yoyoketang/p/6128808.html

desired_caps参数:https://blog.csdn.net/yejianyun1/article/details/56279051

前言

        建议不要直接看API的中文文档,文档的内容太长了。大多数内容介绍的是原理相关的,但是有句话叫不知道原理,照样可以入门,所以自学不从原理开始,从自动化的根本需求出发,逐个击破,最后再通过原理文档找到代码实现的原理,以便以后解决更多的问题以及对付面试官!

API学习从代码开始:

        笔记一里,搭建完环境后,有一段代码是驱动安卓手机中的计算器,运行简单的计算操作。就从分析这段代码来:源码如下

#coding=utf-8
from appium import webdriver

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.0.1'
desired_caps['deviceName'] = 'Android Emulator'
desired_caps['appPackage'] = 'com.android.calculator2'
desired_caps['appActivity'] = '.Calculator'

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

driver.find_element_by_name("1").click()

driver.find_element_by_name("5").click()

driver.find_element_by_name("9").click()

driver.find_element_by_name("delete").click()

driver.find_element_by_name("9").click()

driver.find_element_by_name("5").click()

driver.find_element_by_name("+").click()

driver.find_element_by_name("6").click()

driver.find_element_by_name("=").click()

driver.quit()

        这一段看似很长,不过实际上就几个关键部分,弄明白了内容后自己尝试几次应该就可以了。先看俺有哪几部分:desired_caps/Remote()/find_element_by_name()/click/quit()

find_element_by_name:通过名称定位字段 ,写过selenium的代码自然之后,但是后面的内容,Appium怎么取,就需要研究一下了!

        用SDK manager自带的UI Automator Viewer,看取的内容,效果不好,而且看不到Xpath,对比我这种小白,定位起来很不方便。所以怎么办嗯?看文头链接,搞一个,等等,暂时先不搞了。将就下

常用的有4个:下面举例3个,第四个是Xpath,不过自带的取不到,很尴尬!截个图方便以后回头看知道这几个是怎么找的

driver.find_element_by_class_name("android.widget.Button").click()
driver.find_element_by_name("8").click()
driver.find_element_by_id("com.android.calculator2:id/digit_9").click()

Click():操作

        Android操作内容比web有些内容相同,有些内容是独有的

相同操作:点击【click()】, 清空【clear()】, 输入【send()】,获取元素的text内容【text】

不同操作:1. 触摸操作   2. 系统按键操作   3. driver特殊操作

1. 触摸屏操作:

1.1 长按元素:driver.tap([(234,483),(327,568)],2)

元素比较好理解,就3部分:

1.1.1 driver.tap()   关键字

1.1.2 [(234,483),(327,568)]    元素坐标,需要写完整,不能只写一部分。实例如下:

driver.tap([(234,483),(327,568)],100)  # 能够运行,但是没有持续时间
driver.tap([234,483],2)  # 无法运行,报错:TypeError: 'int' object has no attribute '__getitem__'
driver.tap((234,483),2)  # 无法运行,报错:TypeError: 'int' object has no attribute '__getitem__' 

能够运行的一条确实能够实行,不过感觉从本机看像是没有持续按。也可能是计算器持续按也没有效果,这个当课后作业1:探索driver.tap,是否能够持续按压

1.1.3 “2”,这个是悬停时长,单位ms

1.2 触摸屏常规操作TouchAction(driver)

操作步骤:1. 引用TouchAchton    2. 生成TouchAction对象    3. 对象执行操作

1.2.1 引用:本地尝试的时候发现,调用TouchAchtion失败,找了下这个方法需要单独引用,只引用appium的webdriver还不够

from appium.webdriver.common.touch_action import TouchAction

1.2.2 创建触摸对象:action=TouchAction(driver)   可以理解为操作的发生器,一户的一系列操作都由action产生

1.2.3 编写运动脚本:运动包含短按、长按、移动到、等待、点击、取消、执行、释放。

action.press(x=24, y=386).wait(2).move_to(x=129, y=386).move_to(x=123, y=386).release().perform()

这里运用到了短按、等待、移动、释放。 执行一系列操作之后,还需要增加.perform(),让操作能够运行出来!

本地实践了下,上诉代码在操作计算器的时候,报错了:The coordinates provided to an interactions operation are invalid.【提供给交互操作的坐标无效。】查了下分析原因是手机分辨率不同,超过了手机设定的位置,导致元素点击不到。这个暂时也作为课后作业2,先不做解答。

1.3 多点触控操作:MultiAction()

操作步骤:1. 定位多个TouchAction()   2. MutiAction.add() 将多个Action拼接到一起, 3 . perform()执行

1.3.1 引用MutiAction: 

from appium.webdriver.common.multi_action import MultiAction

1.3.2 根据需要创建多个TouchAction,在TouchAction中,不要使用.perform()

1.3.3 使用MutiAction.add将多个TouchAction串联起来, 之后使用perform()

action = TouchAction(driver)
action.press(x=24, y=386).wait(2).move_to(x=129, y=386).move_to(x=123, y=386).release()

action2 = TouchAction(driver)
action2.press(x=11, y=11)

MultiAction().add(action).add(action2).perform()

1.4 滑动坐标:driver.swipe(). 这个实例类似于封装了一套进行滑动的方法。可以直接复制到本地直接作为方法调用。

2. 系统按键事件:

操作步骤:1. 使用关键字:driver.press_keycode()   2. 录入需要进行的按键操作,实际使用的时候再单独对应下就可以了。这部分内容不太难,不做过多解释。

3. driver中一些比较重要的操作。

入门阶段使用的不多,操作部分先分析到这。

driver. quit():退出功能,没有执行会导致之前的session未失效,无法再运行脚本

Webdriver.Remote: 控制本地Appium服务器

操作步骤:1. 录入控制Appium服务器   2. 手机端连接说明:主要用于告诉服务器,链接哪台服务器的哪个功能

1. 服务器地址,配置本地地址,使用:localhose,如果有确切的appium地址,也可以使用详细地址

'http://127.0.0.1:4723/wd/hub'

2. desired_caps,配置内容很多,这个根据测试需要进行配置:详见开头

desired_caps['platformName'] = 'Android'    # 平台名称
desired_caps['platformVersion'] = '5.0.1'   # 平台版本
desired_caps['deviceName'] = 'Android Emulator'    # 设备名称
desired_caps['appPackage'] = 'com.android.calculator2'  # 包名
desired_caps['appActivity'] = '.Calculator'  # 启动文件

以上内容差不多入门了,开始搞下需要测试的系统了,下期见

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值