在使用appium过程中遇到了执行一个用例时有多个不同的acitivity的情况,以下为app内部切换acitivity的方法: 如果仅需要切换一次activity,可以通过设置desired_caps['appWaitActivity'] = 'xxxxxx'来实现. 如果需要多次切换activity,则通过webdriver中的wait_activity()方法来实现. wait_activity(): def wait_activity(self, activity, timeout, i…
解决方案: driver中增加以下2行配置: "unicodeKeyboard":True, #unicode编码输入 "resetKeyboard":True #隐藏软键盘…
简介 Capability又叫Appium Desired Capabilities,前边写了那么多实例代码,小伙伴可以发现一些规律,就是有一部分代码总是重复的出现在你的视线中.这部分就是对Capability的配置.那么今天给小伙伴们分享.介绍和讲解一下Capability.让你知道她的来龙去脉,知道为什么代码里那么写. 1. 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其实那些信息就是c…
简介 前边具体操作和实战已经讲解和分享了很多了,但是一些android的一些基础知识,你又知道多少了,你都掌握了吗?这篇就由宏哥给小伙伴们既是一个分享,又是对前边的一次总结.为什么要对这些做一个简单的分享了,因为在现实具体工作中经常会遇到这样的问题,这里还是通过一个小故事来说明一下.   QA:“那个谁谁谁,我刚刚按照上一次那样操作这款款APP,我死活是跑不起测试脚本了.(内心独白:我去,这个奇怪的问题,一定是他给我的安装包有问题”) DEV:“嗯?还有这样的问题,那你看一下你手机和电脑连接好了…
appium Ui自动化调起微信并点击登录按钮的java代码(对的,就这么一丢丢). public class testWX { public static void main(String[] args) throws Exception { AndroidDriver driver; //DesiredCapabilities 负责启动服务端时的参数设置. DesiredCapabilities cap = new DesiredCapabilities(); cap.setCapabili…
​简介 通过上一篇宏哥给各位小伙伴们的引荐,大家移动对这位美女有了深刻的认识,而且她那高超的技艺和婀娜的身姿久久地浮现在你的脑海里,是不是这样呢???不要害羞直接告诉宏哥:是,就对了.宏哥要的就是这个效果.达到这个效果,就说明你学的差不多了,可以出师了.今天继续由宏哥给你引荐这位琵琶美女. 说明:Appium--奴家的大号,提起奴家的大号在江湖上也是无人不知,无人不晓.奴家==Appium: 1.界面认识(奴家外表) 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界…
最近在使用appium做Android手机自动化脚本录制, 发现点击“tap”时,一直没有用,页面还是不能跳转. 咋办?发愁... 于是看到旁边有个“sendkeys”,那是不是能够直接发送参数不就行了吗?!瞬间感觉到自己真是聪明绝顶,哦嘿哟~ 结果,结果,OH NO,才发现输入参数后,使用“sendkeys”还是没有响应.没有响应. 彻底失落了. 换手机,最后用VIVO手机,重新配置环境,一切重头再来. 结果意想不到的是,能够正常运行啦,要飞起来了~ 总结一下:原来使用小米手机,无法利用app…
1.selenium做自动化的时候,需要模拟鼠标进行单击.双击.右键.拖拽等操作,selenium提供了ActionChains类来进行处理. 2.执行原理:当你调用ActionChains的方法时,不会立即执行,而是会将所有的操作按顺序存放在一个队列里,当你调用perform()方法时,队列中的事件会依次执行. from selenium.webdriver.common.action_chains import ActionChainsfrom selenium import webdriv…
小白搞appium,遇到启动不了activity的问题: 查找解决方案说是跟AndroidManifest.xml有关系,参考:https://github.com/appium/appium/issues/4313 之后打开AndroidManifest.xml,在主activity和intent入口处添加:android:exported="true"…
一.步骤及环境 环境:Windows 7版本 64位系统(python) 1.jdk安装配置:jdk1.6.0 (64位) 2.android-sdk下载安装:android-sdk_r24.3.4-windows 3.安装Node.js:node-v4.4.7-x64 4.安装appium(Appium Server或appium-desktop):1.4.13.1 5.安装Appium-Python-Client 6.appium-doctor环境检查 7.安装模拟器 8.测试环境验证 9.…
4.1 等待函数癈使用 4.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个元素,可是我无论怎么定位他都没办法操作,然后报错,这个是怎么个情况呢?因为当我们app打开一个页面的时候我们的appium的运行速度过快那么可能害没有将页面的资源解析完成然后你就去操作了,这样能行吗?肯定不行的,这样不报错谁错呢?所以在很多的时候我们都需要加载等待时间的.那什么时候为每个页面都加载等待…
简介 在前边的第二十二篇文章里,已经分享了通过获取控件的坐标点来获取点击事件的所需要的点击位置,那么还有没有其他方法来获取控件点击事件所需要的点击位置呢?答案是:Yes!因为在不同的大小屏幕的手机上获取控件的坐标点,不是一样的,而是有变化的,因此在不同的手机机型上,我们可能都需要重新获取坐标点,这么操作起来,如果操作控件特别的多,那么获取控件的坐标点就会显得特别的繁琐.因此我们可以通过获取控件的ID来避免获取控件坐标点的这种弊端. 通过控件ID实现自动化脚本的运行,就性能而言,会比控件坐标的实现…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8596449 在Android系统中,同一时刻只有一个Activity组件是处于激活状态的,因此,当ActivityManagerService服务激活了一个 新的Activity组件时,它就需要通知WindowManagerService服务将该Activity组件的窗口显示出来,这会涉及到将焦点和屏 幕等资源从前一个激活的Activity组件…
Appium+python自动化8-AppiumPython API   前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage: driver.contexts 用法 driver.contexts 2. current_context c…
appium安卓自动化的 常用driver方法封装 做安卓自动化的时候,很多方法写起来会造成代码冗余,把这部分封装起来 ,添加到androidUI工具类里,随时可调用 都放在这个类下面: @Componentpublic class AndroidUI{ 首先要进行driver实例的连接,连接后才能做相应的一些操作,及得造作完成要关闭driver,避免内存占用 连接driver /* * @method: 连接driver */public void setUp(DesiredCapabilit…
前言 做Android端功能自动化已有2年多的时间了,使用过的功能自动化框架有Robotium.Uiautomator.Appium.最近研究自动化case复用的方案,调研了Appium的自动化框架,并将其应用到银行一账通的标版中,本文详细介绍基于Appium的Android功能自动化实战经验.主要包括以下几方面内容: Appium框架原理介绍 Appium框架常用API介绍 基于Appium框架的自动化开发环境搭建 自动化case开发及分层结构设计 自动化测试用例书写规范及注意事项 功能自动化…
最近需要对练习项目中的代码进行优化,发现很多代码写起来远比想象的困难很多.刚接触Android时间不长,很多东西都不能融会贯通,所以才会有这样的问题存在,当然学习中遇到的问题很有必要做个总结.想想这个需求也是比较简单,就是不想让右图界面上出现点击Button切换Activity,这也许是许多刚接触的朋友都会萌生的念头吧,我也不例外.开始在网上找的方法很多都是讲到ViewPager这样的东西,Demo看了,也模仿了一个出来,但终究发现不能满足自己的需求,使用了ViewPager后,布局都是通过代码…
简介 奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人. 相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花.花叶生生两不见,相念相惜永相失,路尽头有一条河叫忘川河,河上有一座桥叫奈何桥.走过奈何桥有一个土台叫望乡台.望乡台边有个亭子叫孟婆亭,有个叫孟婆的女人守候在那里,给每个经过的路人递上一碗孟婆汤.忘川河边有一块石头叫三生石.喝下孟婆汤让人忘了一切.三生石记载着前世今生来世. 人死先到鬼门关,出了鬼门关,途经黄泉路,来到忘川河边,便是奈何桥.奈何桥上有孟婆,要过…
简介 在前边所有涉及启动app的时候有这样一行代码driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps),很多小伙伴们和同学们不知道这个ip和端口哪里来的,我觉得有必要给小伙伴解释一下,于是宏哥决定写一篇关于这个appium的服务器ip文章! 来给大家答答疑,解解惑!这样就不会问一些比较幼稚的问题,让别人看了笑话,笑掉大牙了.eg:宏哥,宏哥,宏哥,那个我在测试服务器搭建测试环境,我是不是就只能在测试服务器上…
简介 宏哥的人品还算说得过去,虽然很久没有搭建环境了,但是换了新电脑设备,一气呵成,将android的测试开发环境已经搭建准备完毕.上一篇android测试开发环境已经准备好, 那么接下来就是appium的环境安装和搭建了. 嘿嘿!宏哥和小伙伴们开个玩笑,不要觉得自人品不好,就不会成功那都是骗人的.搭建环境和人品半毛钱关系也没有,搭建环境环境安装过程中切勿浮躁,静下心来一个一个慢慢地按照步骤一个个来. 遇到问题解决问题即可.宏哥倒是想遇到问题了,可是问题死活不找宏哥,怕被宏哥KO掉了,当然你们遇…
简介 今天是高考各地由于降水,特别糟糕,各位考生高考加油,全国人民端午节快乐.最近整理了一下自动化的东西,先前整理的python接口自动化已经接近尾声.即将要开启新的征程和篇章(Appium&python).那么首相的问题就是搭建环境了.好久没搭建环境又踩了不少坑,appium的环境搭建比较繁琐,好多同行估计都在环境上被卡死了.所以特此分享一下~~ appium可以说是做app最火的一个自动化框架,它的主要优势是支持android和ios,另外脚本语言也是支持java和Python.而且现在招聘…
@作者 彭海波 转载请注明出处 前言 由于需求的快速迭代和敏捷测试的要求,在测试过程中引入自动化成为必不可少的手段.作为一个互联网测试团队,我们自然也引入了自动化测试这个环节.在众多的测试框架中,我们选取了相对成熟稳定,支持多种平台的Appium框架.虽然Appium自身的Api能解决大多数的测试场景,但总有漏网之鱼.不巧,就是这些漏网之鱼往往成为我们自动化实施中的那些梗.本文主要介绍我们测试团队在Appium UI自动化实施过程遇到的梗,以及对应的解决方法. 自动化测试 Appium自动化框架…
前言 在一个主界面中做Activity切换一般都会用TabActivity,使用方便,Activity互相之间相对独立,但是可定制性不强,而且修改起来很麻烦.当然也可以把layout分开,把逻辑代码全写在主界面的逻辑代码中,但是很明显可维护性相当差,这里通过ActivityGroup来解决这个问题. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://www.cnblogs.com/over140/ 文章 1. Android…
appium初始化driver时,如果未安装该app会先进行安装,安装时,很多安卓手机都会弹框,需要手动确认安装. 如小米的机器, 这是个头疼的问题,之前在网上找遍了,只有通过adb去点相对坐标成功了,但是依然觉得不完美.一来没法判断是否有弹框,再者就算通过坐标比例去点,也没法保证所有系统的安装按钮都在那个相对位置. 后来突发奇想,想到一个好办法,讲下原理: 要运行appium的手机,一般至少会安装3个app,分别是输入法.Appium Settings.unlock. 既然要运行appium自…
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙伴不知道这个ip和端口哪里来的,于是小编决定写一篇关于这个appium的服务器ip文章! 一般来说appium中127.0.0.1这个地址的默认的不需要修改.在做自动化过程中,如果遇到需要远程操作的话,这个功能就可以派上用场了.想想看,如果公司给你单独配置一台跑自动化测试电脑,然后自己工作的电脑写脚…
前言 由于app的webview自动化是依赖于chromedriver的,并且每个app的webview版本号都不太一样,这就导致了,每次都需要重新去下载对应的chromedriver版本.如何根据当前的webdriver版本去匹配对应chromedriver版本,这是一个难题.可以看下如下官方文档,本篇是根据官方文档翻译过来的. 版本不匹配的话一般会报错:An unknown server-side error occurred while processing the command. Or…
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itools安装.对于没有iPhone真机的小伙伴,想在iOS模拟器上安装app测试可不是那么容易的事情. 一.启动iOS Simulator 1.Xcode>Open Developer Tool>iOS Simulator,打开后在hardware里面选对应的iPhone版本就能启动模拟器了…
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙伴不知道这个ip和端口哪里来的,于是小编决定写一篇关于这个appium的服务器ip文章! 一般来说appium中127.0.0.1这个地址的默认的不需要修改.在做自动化过程中,如果遇到需要远程操作的话,这个功能就可以派上用场了.想想看,如果公司给你单独配置一台跑自动化测试电脑,然后自己工作的电脑写脚…
前言 做过iOS上app测试的小伙伴应该都知道,普通用户安装app都是从appstore下载安装,安装测试版本的app,一般就是开发给的二维码扫码安装, 或者开发给个.ipa的安装包文件,通过itools安装.对于没有iPhone真机的小伙伴,想在iOS模拟器上安装app测试可不是那么容易的事情. 一.启动iOS Simulator 1.Xcode>Open Developer Tool>iOS Simulator,打开后在hardware里面选对应的iPhone版本就能启动模拟器了…
前言 在第三篇启动app的时候有这样一行代码driver = webdriver.Remote('http://192.168.1.1:4723/wd/hub', desired_caps),很多小伙伴不知道这个ip和端口哪里来的,于是小编决定写一篇关于这个appium的服务器ip文章! 一般来说appium中127.0.0.1这个地址的默认的不需要修改.在做自动化过程中,如果遇到需要远程操作的话,这个功能就可以派上用场了.想想看,如果公司给你单独配置一台跑自动化测试电脑,然后自己工作的电脑写脚…