美文网首页
Appium 选择操作元素

Appium 选择操作元素

作者: 清水秋香 | 来源:发表于2020-02-26 18:23 被阅读0次
  • 概述
    UI自动化,当然包括appium,主要就是干三种事情:
    1选择 界面 元素
    2操作元素(包括输入操作:点击、输入字符、拖拽等。输出操作:获取页面元素的各种属性)
    3根据Appium获取的数据进行分析和处理。

  • 查看appPackage 和 appActivity
    方法一:
    mac

/usr/local/android-sdk-macosx/build-tools/29.0.3/aapt dump badging /Users/wgz/Desktop/头条app/toutiao.apk
#包名
package: name='io.manong.developerdaily'
#入口名
name='io.toutiao.android.ui.activity.LaunchActivity'

win

e:\androidsdk\build-tools\28.0.2\aapt.exe dump badging d:\apk\toutiao.apk

方法二:
如果被测app已经安装在手机上了,可以直接打开手机上该应用,进入到你要操作的界面然后执行:

adb shell dumpsys activity recents 

会出现N个activity信息,最近的就是我们想要的
例:
com=com.anfroid.mms/.ui.ConversationList

  • Appium自动化和Selenium自动化都是界面的自动化操作,所以其原理和操作方式非常相似。
    1⃣️resourse-id:是该元素的资源id,一般来说唯一的决定了一个元素,有点像web的ID,优先根据他查找。
    但是并非每一个元素都会有。如果这样,就需要其他的方法选择
    2⃣️class:就是该元素的类型,这是安卓界面元素对应的代码里的java类,类似html的tag名,比如layout,textview。
    3⃣️package:就是所在app的包名
    4⃣️content-desc:这个属性用来描述该元素的用途,特性等
    5⃣️bounds:就是这个元素在界面上的位置,左上角和右下角的坐标。
    以后如果我们死在找不到元素的时候,就根据这个属性直接去根据坐标操作元素了。

准备自动化配置信息:

desired_caps = {
          #移动设备平台
          "platformName":"Android",
          #平台版本号,写整数位即可
          "plathformVerSion":"8",
          #设备的名称--值可以随便写
          "deviceName":"test0106",
          #提供被测app的信息-包名,入口信息
          "appPackage":"xxx",
          "appActivity":"xxx",
          #确保自动化之后不重制app
          "noReset":True,
          #设置session的超时时间,单位秒
          "newCommandTimeout":6000
}
  • 这一行代码发生了什么?
webdriver.Remote('http://localhost:4723/wb/hub',desired_caps)

1.客户端代码于appiumserver建立连接,并传递caps配置信息
2.Appiumserver检查配置信息是否符合要求
3.利用adb工具检查当前连接的移动设备
4.安装appium-settings与uiautomator2到被测手机(首次运行脚本发生)
5.手机启动aappium-settings作为监听服务,用于和appium-server进行通信
6.uiaotumator2启动被测app

  • 选择元素
    选择元素的代码也和Selenium基本相同,如下
    可以通过
    find_element_by_xxx 符合条件的第一个元素,找不到抛出异常
    find_elements_by_xxx 符合条件的所有元素列表,找不到返回空列表
    通过webdriver对象调用这样的方法,查找范围是整个界面的树形结构。
    通过webelement对象调用这样的方法,查找范围是该节点的子节点
选择元素方式
  • id 例:
    ele = driver.find_elelment_by_id('com.example.jcy.wvtest:id/name1')
    ele.send_keys('hello word')
    但是我们只靠id定位也是远远不够的。
    有的元素没有ID,而且有的时候ID也并非唯一

  • class name
    class树形决定了界面的元素类型。
    通常class就是类似web里面的tagname,所以通常不是唯一的,所以大部分情况,我们根据classname是要选择多个而不是一个。
    如果确定,我们要查找的是某种类型的界面元素,而且这种类型的界面元素在当前界面中只有一个,就可以根据他来查找。
    写法是:
    driver.find_element_by_class_name('android.widget.DatePicker')

  • accessibility id
    content-desc树形是用来描述该元素的作用
    要查询的界面元素content-desc树形在当前界面中唯一我们可以通过他来定位,
    写法:
    driver.find_element_by_accessibility_id('xxx')

  • 元素定位工具补充:Appium的inspector
    该工具可以像浏览器一样在上面验证xpath表达式。
    需要我们手动创建一个session,其实就是一个客户端,和appium server连接
    填入参数,就像代码汇总的,手动填写下面参数,一一对应。
desired_caps = {
          #移动设备平台
          "platformName":"Android",
          #平台版本号,写整数位即可
          "plathformVerSion":"8",
          #设备的名称--值可以随便写
          "deviceName":"test0106",
          #提供被测app的信息-包名,入口信息
          "appPackage":"xxx",
          "appActivity":"xxx",
          #确保自动化之后不重制app
          "noReset":True,
          #设置session的超时时间,单位秒
          "newCommandTimeout":6000
          #'app':'xxx.apk' 
}


相关文章

  • Appium 选择操作元素

    概述UI自动化,当然包括appium,主要就是干三种事情:1选择 界面 元素2操作元素(包括输入操作:点击、输入字...

  • Appium Xpath 选择元素

    大家还记得我们做 web 自动化的时候,最灵活的定位方式就是 css 和 xpath 了。我们也经常用它来选择一些...

  • Python+Appium自动化测试之location与size

    appium做app自动化测试过程中,有时需要获取控件元素的坐标进行滑动操作。appium中提供了location...

  • Appium定位元素-xPath方法

    Appium定位元素 - xPath 研究appium遇到的第一个困难是元素定位,而且元素定位在appium使用...

  • Appium定位元素-xPath方法

    Appium定位元素 - xPath 研究appium遇到的第一个困难是元素定位,而且元素定位在appium使用...

  • Python自动化测试学习哪些知识?

    Python自动化测试学习哪些知识?先学习自动化测试基础,学习Appium操作,元素定位、操作、等待、滑动等,深入...

  • Appium 选择 APP 界面元素

    4.1 查看工具 Web 自动化开发的时候,要找到元素,我们是通过浏览器的开发者工具栏来查看元素的特性,根据这些特...

  • Appium 使用 tap 方法操作元素

    前面讲解的例子中,我们已经学习过对元素的输入和点击操作了。分别通过对 WebElement 对象调用 send_k...

  • 进阶14——jQuery

    1.jQuery 能做什么? 选择元素:语法同CSS选择器 元素DOM操作:创建、添加、删除元素,元素属性操作、C...

  • 【目录】_Appium实践

    【Appium实践】_环境搭建 【Appium实践】_启动第一个app 【Appium实践】_app元素定位

网友评论

      本文标题:Appium 选择操作元素

      本文链接:https://www.haomeiwen.com/subject/wbsbchtx.html