appium桌面版本以及一些自动化测试方方封装

这篇具有很好参考价值的文章主要介绍了appium桌面版本以及一些自动化测试方方封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

标签(空格分隔): appium_desktop

一 appium_desktop_v1.2.6
1.appium_desktop在github上最新下载地址:appium桌面版本地址

appium桌面版本以及一些自动化测试方方封装
2.一路傻瓜式安装就好了:

appium桌面版本以及一些自动化测试方方封装
3.然后点击搜索按钮(右上角)
三 inspector
1.元素定位探测器,在Desired Capabilitis下表格输入参数配置信息:

"platformName": "Android",
  "deviceName": "8681-M02-0x253b1876",
  "platformVersion": "5.1",
  "appPackage": "com.zhan.toefltom",
  "appActivity": "com.zhan.toefltom.SplashActivity",
  "app": "F:\\特殊处理包H5\\toefl_V2.1.0_071610_release.apk"

appium桌面版本以及一些自动化测试方方封装
2.参数配置好之后可以保存下,连接手机,再点Start Session按钮就能定位元素了

appium桌面版本以及一些自动化测试方方封装
3.用上图导航栏的箭头按钮,定位左边app的元素属性

四 弹出框的坑

1.这里有个坑,这种弹出框的元素无法定位到,需要用UI Automator Viewer这个工具才能定位到

appium桌面版本以及一些自动化测试方方封装

五 对比分析

inspector优点
appium自带的inspector可以查看xpath路径,对比xpath不熟悉的同学可以很好的帮助
inspector缺点
1.有些弹出框的元素无法定位到
2.过分依赖工具匹配出来的xpath会让你变懒,形成对工具的依赖
总结:xpath实际上是定位的下下策,能不用尽量不用,另外不要一直复制xpath粘贴,那对你定位一点帮助也没有,想用xpath的同学,多学习语法,自己去写!

六:如果定位的过程你使用了全部的招数都无法定位到元素:

so:那就要使用坐标定位了

七:定位坐标

appium桌面版本以及一些自动化测试方方封装
如图我们可以看到对应的坐标的属性

android特有的wait_activity属性
在启动app的时候,如果直接做下一步点击操作,经常会报错,于是我们会在启动完成的时候加sleep。
那么问题来了,这个sleep时间到底设置多少合适呢?设置长了,就浪费时间,设置短了,就会找不到元素报错了,这个时候我们可以用wait_activity的语法,等到你想点击的页面activity出现了,再点击,可以有效的节省时间。

wait_activity(self, activity, timeout, interval=1):
等待指定的activity出现直到超时,interval为扫描间隔1秒
即每隔几秒获取一次当前的activity, android特有的
返回的True 或 False
activity - 需等待的目标 activity
- timeout - 最大超时时间,单位是s
- interval - 循环查询时间
用法:driver.wait_activity(‘.activity.xxx’,5,2)
二、获取current_activity
1.打开app后,先sleep10秒,等app完全启动完成进入主页面,然后获取当前界面的activity
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
from time import sleep
import datetime

desired_caps = {
    "platformName": "Android",
    "deviceName": "8681-M02-0x253b1876",
    "platformVersion": "5.1",
    "appPackage": "com.zhan.toefltom",
    "appActivity": "com.zhan.toefltom.SplashActivity"
}
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)
ac =driver.current_activity
print(ac)

等待activity
1.用sleep太浪费时间了,并且不知道什么时候能启动完成,所以尽量不用sleep

2.上一步已经获取当主页面的activity了,那就可以用wait_activity等它出现了,再做下一步的点击操作

新版本的appium不支持name定位了:

一、 name定位报错
1.最新版appium V1.7用name定位,报错:
selenium.common.exceptions.InvalidSelectorException: Message: Locator Strategy ‘name’ is not supported for this session
2.这个报错是说name这个定位方法目前已经不支持了,因为appium从1.5版本开始就已经抛弃了name这种定位方法了。
二、 xpath定位
1.既然name定位抛弃了,那就说明有更先进的定位代替了它,事实上xpath定位里面已经包含了name这种定位方法。
2.平常用过selenium,在定位页面上文本的时候,应该知道这个xpath语法:

//*[text()=‘页面text文本’]
appium里面的xpath语法跟selenium有一点点区别:

//[@text=‘页面text文本’]
三、 text属性
1.上面的xpath语法适合页面上这个text属性是唯一的,才好直接定位到,那么问题来了:如果页面上有多个text属性的文本一样,怎么办?
2.xpath语法里面
是代表匹配任意的值,在selenium里面是匹配任意标签,appium里的是匹配任意class名称,如果几个文本的class属性不一样,就可以通过以下组合:

//android.widget.TextView[@text='小说']

appium桌面版本以及一些自动化测试方方封装

toast提示消息判断

1.查看appium v1.7版本官方文档
2.目前1.7的android版可以支持:Espresso、UiAutomator2、UiAutomator、Selendroid四种驱动模式
UiAutomator2是目前最稳的。
二、toast定位
1.先看下toast长什么样,如下图,像这种弹出来的消息"再按一次退出",这种就是toast了。

appium桌面版本以及一些自动化测试方方封装
2.想要定位toast提示:
需要:

from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from time import sleep
desired_caps = {
                'platformName': 'Android',
                'deviceName': '***',
                'platformVersion': '4.4.2',
                'appPackage': '*****',
                'appActivity': '****',
                'noReset': 'true',
                'automationName': 'Uiautomator2'
                }
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
# 等主页面activity出现
driver.wait_activity(".****", 10)
driver.back()   # 点返回
# 定位toast元素
toast_loc = ("xpath", ".//*[contains(@text,'再按一次退出')]")
t = WebDriverWait(driver, 10, 0.1).until(EC.presence_of_element_located(toast_loc))
print t

上述:***自行测试中填写自己的内容

3.打印出来的结果,出现如下信息,说明定位到toast了

<appium.webdriver.webelement.WebElement (session=“02813cce-9aaf-4754-a532-07ef7aebeb88”, element=“339f72c4-d2e0-4d98-8db0-69be741a3d1b”)>

封装toast判断:
1.有时候我们需要单独封装一个方法来判断toast是否存在,存在返回True,不存在返回False
3.打印出来的结果,出现如下信息,说明定位到toast了

def is_toast_exist(driver,text,timeout=30,poll_frequency=0.5):
# driver - 传driver
#text   - 页面上看到的文本内容
 #timeout - 最大超时时间,默认30s
 #poll_frequency  - 间隔查询时间,默认0.5s查询一次
try:
        toast_loc = ("xpath", ".//*[contains(@text,'%s')]"%text)
        WebDriverWait(driver, timeout, poll_frequency).until(EC.presence_of_element_located(toast_loc))
        return True
    except:
        return False
if __name__ == "__main__":
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
    # 等主页面activity出现
    driver.wait_activity(".base.ui.MainActivity", 10)
    driver.back()   # 点返回
    # 判断是否存在toast-'再按一次退出'
    print is_toast_exist(driver, "再按一次退出")

list定位:
当你定位元素的时候发现页面元素不唯一的时候,怎么办,这时候我们可以通过find_elements等list的取值来获取自己想要的元素,然后进行操作;
find_element有13种定位
appium桌面版本以及一些自动化测试方方封装
find_elements也有13种

appium桌面版本以及一些自动化测试方方封装

driver.find_elements_by_id("***")[0].click()

android_uiautomator
appium的前身就是封装android的uiautomator这个框架来的,所以uiautomator的一些定位方法也可以用;
text
1.通过text文本定位语法
new UiSelector().text(“text文本”)
2.文本比较长的时候,可以用textContains模糊匹配,只要文本包含匹配内容就可以了。
new UiSelector().textContains(“包含text文本”)
3.textStartsWith是以某个文本开头的匹配
new UiSelector().textStartsWith(“以text文本开头”)
4.正则匹配textMatches,这个需要配合正则表达式,就不举例了。
new UiSelector().textMatches(“正则表达式”)

#等主页面activity出现
driver.wait_activity(".base.ui.MainActivity", 10)
loc_text = 'new UiSelector().text("图书")'#text内容
driver.find_element_by_android_uiautomator(loc_text).click()
loc_textContains = 'new UiSelector().textContains("图")'#textContains
driver.find_element_by_android_uiautomator(loc_textContains).click()
loc_textStart = 'new UiSelector().textStartsWith("图")'#textStartsWith
driver.find_element_by_android_uiautomator(loc_textStart).click()

className
1.页面上的class属性一般不唯一,多半用在复数定位时候。比如通过class属性定位’排行’这个按钮下标就是2。
new UiSelector().className(“className”)
2.className复数定位loc_class = 'new UiSelector().className(“android.widget.TextView”)'driver.find_elements_by_android_uiautomator(loc_class)2.click()
3.escription
1.由于这个app的contenet-des属性都是空的,就不用代码演示了,跟上面方法一样。
new UiSelector().description(“contenet-des属性”)

最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】

appium桌面版本以及一些自动化测试方方封装appium桌面版本以及一些自动化测试方方封装文章来源地址https://www.toymoban.com/news/detail-412494.html

到了这里,关于appium桌面版本以及一些自动化测试方方封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Appium 自动化测试

    1.Appium介绍 1,appium是开源的移动端自动化测试框架; 2,appium可以测试原生的、混合的、以及移动端的web项目; 3,appium可以测试ios,android应用(当然了,还有firefoxos); 4,appium是跨平台的,可以用在osx,windows以及linux桌面系统上; 2.Appium基本原理 在Android端,appium基于We

    2024年02月01日
    浏览(33)
  • Appium自动化(15) - 针对 webview 进行自动化测试

     🔥 交流讨论: 欢迎加入我们一起学习! 🔥 资源分享 : 耗时200+小时精选的「软件测试」资料包 🔥  教程推荐: 火遍全网的《软件测试》教程   📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! WebView是android中一个非常重要的控件 它的作用是用来展示一个web页面

    2024年04月10日
    浏览(37)
  • appium+python自动化测试

    1、aapt即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看apk包名和launcherActivity 2、在android-sdk里面双击SDK-manager,下载buidl-tools 3、勾选build-tools,随便选一个版本,我这里选的是24的版本 4、下载完成后:在D:androidsdkandroid-sdk-windowsbuild-tools24.0.0目录下找到aapt.e

    2024年02月10日
    浏览(29)
  • appium实现自动化测试原理

    目录 1、Appium原理 1.1、Android Appium原理图文解析 1.1.2、原理详解 1.1.2.1、脚本端 1.1.2.2、appium-server 1.1.2.3、中间件bootstrap.jar 1.1.2.4、驱动引擎uiautomator 1.2、 IOS Appium原理 执行测试脚本全过程: 1、测试脚本通过Json Wire Protocol协议以json格式将数据通过HTTP协议与appium-server之间进行

    2024年02月20日
    浏览(29)
  • 一文详解!appium自动化测试

    目录 前言: Appinum前置知识 Andriod SDK 元素获取—UI Automator adb命令实践 adb常用命令 小结 Package与Activity Activity页面布局元素 monkey简介 monkey事件 操作事件简介 monkey参数 事件类参数 约束类参数 调试类参数 Monkey参数应用综合案例 Monkey脚本API简介 monkey日志管理 monkeyrunner MonkeyR

    2024年02月11日
    浏览(33)
  • 【python+appium】自动化测试

    python+appium自动化测试系列就要告一段落了,本篇博客咱们做个小结。 首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过

    2024年02月14日
    浏览(25)
  • 自动化测试之路 —— Appium使用教程

    😏 作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡 主页地址:【Austin_zhai】 🙆 目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。 💎 声明:博主日常工作较为繁忙,文章会不定期更新,各类行业或职场问题欢

    2024年02月02日
    浏览(46)
  • 【APP自动化测试必知必会】Appium之微信小程序自动化测试

    H5 是指第 5 代 HTML ,也指用 H5 语言制作的一切数字产品。 所谓 HTML 是“超文本标记语言”的英文缩写。我们上网所看到网页,多数都是由 HTML 写成的。 “超文本”是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。而“标记”指的是 这些超文本必须由包含属性

    2024年02月09日
    浏览(82)
  • 使用【Python+Appium】实现自动化测试

    一、环境准备 1.脚本语言:Python3.x    IDE:安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境,path添加E:SoftwareAndroid_SDKplatform-tools 4.安装Appium for windows,官网地址 Redirecting  点击下载按钮会到GitHub的下载页面,选择对应平台下载   安装完成后,启动Appium,host和port默认的即可,然

    2024年02月08日
    浏览(33)
  • Java + Selenium + Appium自动化测试

    一、启动测试机或者Android模拟器(Genymotion俗称世界上最快的模拟器,可自行百度安装) 二、启动Appium(Appium环境安装可自行百度) 三、安装应用到Genymotion上,如下图我安装一个计算机的小应用,包名为CalcTest.apk 安装步骤:(基于Android SDK已经配置好了环境变量,可自行百

    2024年02月07日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包