互联网电商网站建设,建设通网站官网,濮阳网站,广告的六种广告形式前言
最近接到一个测试项目#xff0c;简单描述一下#xff0c;需求就是#xff1a;一端发送指令#xff0c;另一端接受指令并处理指令。大概看了看有上百条指令#xff0c;点点点岂不是废了#xff0c;而且后期迭代#xff0c;每次都需要点点点#xff0c;想想就头大…前言
最近接到一个测试项目简单描述一下需求就是一端发送指令另一端接受指令并处理指令。大概看了看有上百条指令点点点岂不是废了而且后期迭代每次都需要点点点想想就头大。冷静分析一下其实这个需求的测试工作重复性很高操作一端发送指令查看另一端日志验证指令接收处理是否正确果断考虑自动化测试方案。
框架选择
基于本人情况选择pythonpytestappium具体该如何搭建我们先从理论知识开始回顾熟悉一下。
Android自动化
想要开始Android自动化必须要获取APP的相关信息。因为appium的capabilities配置中需要使用。当然Android sdk环境变量相关是更基本的可以自行查找文档进行配置这里就不介绍了。
获取APP信息 获取当前界面元素adb shell dumpsys activity top 获取任务列表adb shell dumpsys activity activities
App入口 adb logcat |grep -i displayed aapt dump badging mobike.apk | grep launchable-activity
启动应用
adb shell am start -W -n com.qw.amobile/.splash.SplashActivity -S
回顾adb基本命令 adb devices查看设备 adb kill-server关闭 adb 的后台进程 adb tcpip让 Android 脱离 USB 线的 TCP 连接方式 adb connect连接开启了 TCP 连接方式的手机 adb logcatAndroid 日志查看 adb bugreport收集日志数据用于后续的分析比如耗电量
adb shell
adb shell 本身就是一个 Linux 的 shell可以调用 Android 内置命令 adb shell dumpsys adb shell pm adb shell am adb shell ps adb shell monkey
性能统计 获取所有的 dumpsys 子命令 dumpsys | grep -i DUMP 获取当前 activity adb shell dumpsys activity top 获取 activities 的记录可以获取到 appium 依赖的原始 activity dumpsys activity activities 获取特定包基本信息 adb shell dumpsys package com.xueqiu.android 获取系统通知 adb shell dumpsys notifification 获得内存信息 adb shell dumpsys meminfo com.android.settings 获取 cpu 信息 adb shell dumpsys cpuinfo 获取 gpu 绘制分析 adb shell dumpsys gfxinfo com.android.settings 获取短信 adb shell dumpsys activity broadcasts | grep senderNameuiautomator
Appium
我们先来看看appium的生态工具 Appium Desktop内嵌了 Appium Server 和 Inspector 的综合工具 Appium ServerAppium 的核心工具命令行工具 Appium Clients各种语言的客户端封装库用于连接 appium server Java、Python、Ruby、robotframework-appium
Appium Desktop
桌面版这个更容易上手可以让你更快体会到简易自动化的乐趣。它有哪些功能呢元素查找、录制用例两大基本功能爽的飞起。
Appium Server
官方推荐安装方式npm install -g appium这种方法可能会失败或者很慢那可以使用下面的方法
淘宝cpm
npm install -g cnpm --registryhttps://registry.npm.taobao.org
cnpm install -g appium还需要安装Node可以从Appium源码中找推荐的版本。
验证是否安装配置成功可以执行命令
appium-doctor哪里失败再针对问题具体搜索解决吧。开始环境配置可能遇到很多问题不要被吓到一个个解决基本都可以找到解决方案。笔者配置时也遇到很多问题最终还是成功了。建议安装之前先找好适配版本可以减少很多问题。
Python中使用
需要安装Appium-Python-Client
pip install Appium-Python-Client定位元素
想要自动化定位元素是必要的一步有哪些方式可以定位元素呢
class By:Set of supported locator strategies.ID idXPATH xpathLINK_TEXT link textPARTIAL_LINK_TEXT partial link textNAME nameTAG_NAME tag nameCLASS_NAME class nameCSS_SELECTOR css selector可以看到可以通过这么多方法来定位元素。
举个例子定位钉钉登录页面最终实现自动登录
class LoginPage(BasePage):_mobile_input_locator (By.XPATH, //XCUIElementTypeApplication[name钉钉]/XCUIElementTypeWindow/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther[1]/XCUIElementTypeOther[2]/XCUIElementTypeTextField)_password_input_locator (By.XPATH, //XCUIElementTypeApplication[name钉钉]/XCUIElementTypeWindow[1]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther[1]/XCUIElementTypeOther[3]/XCUIElementTypeSecureTextField)_clear_input_locator (By.XPATH, //XCUIElementTypeButton[name清除文本])_agree_locator (By.XPATH, //XCUIElementTypeApplication[name钉钉]/XCUIElementTypeWindow[1]/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther/XCUIElementTypeOther[1]/XCUIElementTypeOther[5]/XCUIElementTypeButton)_login_locator (By.XPATH, //XCUIElementTypeStaticText[name登录])def login(self, mobile, pwd):self.find_element_and_click(self._mobile_input_locator)self.find_element_and_click(self._clear_input_locator)self.find_element(self._mobile_input_locator).send_keys(mobile)self.find_element(self._password_input_locator).send_keys(pwd)self.find_element_and_click(self._agree_locator)self.find_element_and_click(self._login_locator)return 登录成功和真实场景是一样的点击手机号输入框-清除已有输入内容-输入登录手机号-输入密码-点击同意协议-点击登录就登录成功了。这是基于page object设计模式设计的这就是核心逻辑用例层调用该方法即可后续再详细写。 最后感谢每一个认真阅读我文章的人看着粉丝一路的上涨和关注礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走 软件测试面试文档
我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。