一、Desired Capabilities

Desired Capabilities 在启动 session 的时候是必须提供的。

Desired Capabilities 本质上是以 key value 字典的方式存放,客户端将这些键值对发给服务端,告诉服务端我们想要怎么测试。它告诉 appium Server这样一些事情:

  • 本次测试是启动浏览器还是启动移动设备。

  • 是启动Andorid还是启动iOS。

  • 启动Android时,app的package是什么。

  • 启动Android时,app的activity是什么。

固定写法参考如下:

desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '4.4.2'
desired_caps['deviceName'] = '127.0.0.1:62001'
desired_caps['appPackage'] = 'com.tencent.mobileqq'
desired_caps['appActivity'] = 'com.tencent.mobileqq.activity.SplashActivity' # android 独有
desired_caps["unicodeKeyboard"] = "True"
desired_caps["resetKeyboard"] = "True"
desired_caps["noReset"] = "True"
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  • deviceName:启动哪种设备,是真机还是模拟器?iPhone Simulator,iPad Simulator,iPhone Retina 4-inch,Android Emulator,Galaxy S4…

  • automationName:使用哪种自动化引擎。appium(默认)还是Selendroid。

  • platformName:使用哪种移动平台。iOS, Android, orFirefoxOS。

  • platformVersion:指定平台的系统版本。例如指的Android平台,版本为5.1。

  • appActivity:待测试的app的Activity名字。比如MainActivity、.Settings。注意,原生app的话要在activity前加个”.“。

  • appPackage:待测试的app的Java package。比如com.example.android.myApp, com.android.settings。

  • noReset:Don't reset app state before this session
  • resetKeyboard:Reset keyboard to its original state, after running Unicode tests with unicodeKeyboard capability. Ignored if used alone. Default false
  • unicodeKeyboard:Enable Unicode input, default false
  • /127.0.0.1:4723 : appium-server 地址

更多的参数配置:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/caps.md

知识拓展:定位appPackage与appActivity 方法

SDK中下载最新的build-tools,通过aapt dump badging xxx.apk命令来查appPackage与appActivity。

CMD下输入adb logcat | findstr /i Start,强制停止被测试软件,再次打开,观察logcat。(手动打开需要操作的appPackage ,从logcat 最下面开始找)

二、定位控件

appium 通过 uiautomatorviewer.bat 工具来查看控件的属性。该工具位于 Android SDK 的 /tools/bin/ 目录下。

1、id 定位

driver.find_element_by_id('resource-id')

# ID定位于selenium不同,可能存在重复的问题。

# appium-desktop抓取元素时如果出现有id,则可以直接用。

# resource-id可能出现重复,需要具体看下有多少个。
2、class name 定位
driver.find_element_by_class_name('class')
# 对应class字段,有可能存在多个相同class。

# 多个相同class,每次获取只取第一个遇到的元素。
3、xpath 定位
driver.find_element_by_xpath('//android.widget.EditText[@text="手机号"]')
# Xpath路径定位,与Web的Xpath定位在有一点点区别

# Native App的定位以class为基准,主要用到参数有text、resource-id、index
4、Accessibility ID定位 --这个方法属于Appium扩展的定位方法
driver.find_element_by_accessibility_id('content-desc')
# Android对应content-desc IOS对应accessibility identifier

# content-desc是给残障人士定义的特殊字段
5、android uiautomator定位 --这个方法属于Appium扩展的定位方法
Android的源生测试框架的定位方式,定位速度快
driver.find_element_by_android_uiautomator('new UiSelector().text("手机号")')
# 匹配全部text文字
driver.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.TextView")')
 
# className
6、iOSPredicateString 
仅支持iOS10以上,可以多个属性同时定位,推荐。(替代XPATH)
driver.find_elements_by_ios_predicate("label == '登录'")

移动端自动化测试 -- appium 之Desired Capabilities与 定位控件的更多相关文章

  1. Appium教程——Desired Capabilities 详解(转自TesterHome)

    Desired Capabilities在启动session的时候是必须提供的. Desired Capabilities本质上是key value的对象,它告诉appium server这样一些事情 ...

  2. 移动端自动化测试Appium 从入门到项目实战Python版☝☝☝

    移动端自动化测试Appium 从入门到项目实战Python版 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌)  说到APP自动化测试,Appium可是说是非常流 ...

  3. 移动端自动化测试appium 从入门到项目实战Python版✍✍✍

    移动端自动化测试appium 从入门到项目实战Python版 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程 ...

  4. 移动端自动化测试Appium 从入门到项目实战Python版

    移动端自动化测试Appium 从入门到项目实战Python版  整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课 ...

  5. appium简明教程(10)——控件定位基础

    狭义上讲,UI级的自动化测试就是让机器代替人去点来点去的过程. 但机器去点什么(点上面还是点左边),怎么点(是长按还是轻触),这些东西是必须由代码的编写者所指示清楚的. 控件定位就是解决机器点什么的问 ...

  6. MonkenRunner通过HierarchyViewer定位控件的方法和建议(Appium/UIAutomator/Robotium姊妹篇)

    1. 背景 在使用MonkeyRunner的时候我们经常会用到Chimchat下面的HierarchyViewer模块来获取目标控件的一些信息来辅助我们测试,但在MonkeyRunner的官网上是没有 ...

  7. 移动端自动化测试Appium环境搭建(part1-2-3)

    Appium移动端自动化测试相信大家都不陌生,appium的铁哥们是selenium,不管是selenium还是appium,都是调用webdriver来做自动化测试.今天关于appium的介绍我们不 ...

  8. 3.移动端自动化测试-appium环境搭建(原理)

    appium自动化原理: 需要服务端(appium启动),手机端(adb连接设备),脚本端(pycharm)就可以进行 自己总结下: 手机和脚本连接:1.adb连接,2靠脚本导入驱动. 脚本和服务端连 ...

  9. Appium移动自动化测试-----(八)定位控件

    appium 通过 uiautomatorviewer.bat 工具来查看控件的属性.该工具位于 Android SDK 的 /tools/bin/ 目录下. id 定位 通过uiautomatorv ...

随机推荐

  1. Linux文件类型(学习笔记六)

    一.Linux下的文件类型 普通文件:在由 ls –al 所显示出来的属性方面,第一个属性为 [ - ] 目录文件:在由 ls –al 所显示出来的属性方面,第一个属性为 [ d ] 设备文件:一般都 ...

  2. jquery局部打印插件使用

    基于jquery库的jquery.PrintArea.js插件源代码为: (function ($) { var printAreaCount = 0; $.fn.printArea = functi ...

  3. Windows注意目录

    win7: c:\windows\tracing%windir%\system32\logfiles\C:\Users\Administrator\AppData\Roaming\softC:\Use ...

  4. Ubuntu 12.04解决重启后resolv.conf清空的问题

    这跟以前用RHT系的 情况是完全不一样的: 在google上搜了一下,发现这里面还真有些奥妙: 1 /etc/resolv.conf 其实是一个Link 它其实指向的是 /run/resolvconf ...

  5. SQL Server表描述 及 字段描述的增、删、改、查询

    SQL Server表描述 及 字段描述的增.删.改.查询 --测试: --创建表及描述信息 ),isname )) --为表添加描述信息 EXECUTE sp_addextendedproperty ...

  6. SQLite的升级(转)

    做Android应用,不可避免的会与SQLite打交道.随着应用的不断升级,原有的数据库结构可能已经不再适应新的功能,这时候,就需要对SQLite数据库的结构进行升级了. SQLite提供了ALTER ...

  7. 如何自定义oauthauthorizationserverprovider错误信息?

    We are using the OAuthAuthorizationServerProvider class to do authorization in our ASP.NET Web Api a ...

  8. tensorflow的警告

    W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_featur ...

  9. 动态计算UITableViewCell高度详解

    本文将介绍四种情况下UITableViewCell的计算方式,分别是: Auto Layout with UILabel in UITableViewCell Auto Layout with UIT ...

  10. 【LeetCode】49. Anagrams (2 solutions)

    Anagrams Given an array of strings, return all groups of strings that are anagrams. Note: All inputs ...