安卓app里面的网页,基本上都是使用手机系统上的webview 去显示的. 安卓 webview 可以看成是 手机上的 chrome 浏览器精简版. appium desktop 里面内置了 用于 webview 自动化的 chromedriver 手机里webview也有一个版本 这样可能会出现appium desktop里面的 chromedriver 与手机里面的不匹配问题 selenium.common.exceptions.WebDriverException: Message: An…
在App开发过程中,很容易用到第三方的WebView控件,这个属于移动端混合型App.在我们做自动化测试的过程中,就要对这种情况进行处理,最通用的办法就是先将appium切换到webview模式然后按查找web元素的方法对WebView里面的元素进行操作即可.具体实施方法,可以参考:http://www.tuicool.com/articles/bIBRZze 可是也有很多情况,如新浪微博第三方授权登录页面(如图一),这个嵌入到App中的第三方WebView,在查上下文信息的时候,找不到对应的W…
WebView的测试:主要作用在混合(Hybrid)的应用 * 一部分是原生界面和代码,而另一部分是内嵌网页 * 比如微信.支付宝 * 内嵌了一个浏览器内核,由浏览器内核实现的 安卓应用中的内嵌的展示网页内容的模块,我们称之为webview 准备工作: app修改编译  ==== 需要添加webview调用   ----  对webview对象加入setWebContentsDebuggingEnable的调用 直接让开发人员在下面这段代码中加入一句代码: protected void onCr…
Appium 微信 webview 的自动化技术   最近好多人问微信webview自动化的事情, 碰巧我也在追微信webview的自动化和性能分析方法. 先发出来一点我的进展给大家参考下. 此方法用于Android平台, iOS请自行解决 微信的设置 用微信打开debugx5.qq.com, 这是个微信的x5内核调试页面. 你可以在任何聊天窗口内输入这个网址. 并打开它. 勾选”是否打开TBS内核Inspector调试功能” 使用ChromeDriver编写测试用例 首先安装ChromeDri…
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html webview 简介 WebView是android中一个非常重要的控件 它的作用是用来展示一个web页面,它使用的内核是 webkit 引擎,Android 4.4版本之后,直接使用 Chrome 作为内置网页浏览器 简单理解:就是App 中内嵌了一个浏览器 类比:Web 浏览器里面的 iframe 做 webview 自动化测试…
前言 用appium切换webview的时候报chrome和chromedriver版本的问题:session not created exception: Chrome version must be >= 58.0.3029.0(Driver info: chromedriver=2.30.477700 ) 运行环境:android 7.0appium 1.7.1appium里面chromedriver 2.28webview版本 57.0 遇到问题 1.当执行switch_to.conte…
问题背景 做appium自动化的时候,使用了UiAutomator1驱动,然后设置了UnicodeKeyboard 执行自动化脚本之后,玩手机的时候发现平时用的输入法键盘没法调出来了 'automationName': 'UiAutomator1', 'unicodeKeyboard': True 问题原因 默认的手机输入法会被appium自动切换成Unicode IME了 解决方案 很简单,将当前输入法切换成自己原来用的就行啦!…
前言 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素定位,而Web网页是单独的B/S架构,两者的运行环境不同因此需要进行上下文(context)切换,然后对H5页面元素进行定位操作. context简介 Android源码中的注释是这么来解释Context的: Interface to global information about an appl…
运行appium切换webview时候遇到报错:’No Chromedriver found that can automate Chrome 'xx.xx.xx' 此报错是因为Appium在运行过程中找不到安卓设备系统中自带Webview的chrome版本所对应版本的Chromedriver,导致了报错. 解决方法: 我们需要找到与安卓系统中webview对应的chromedriver版本并更新到appium中. 找到appium服务使用的chromedriver驱动所在位置,然后使用新下载c…
用appium开发移动端自动化测试脚本这么长时间,还没有认证的了解下它的原理是什么,到底是如何实现的呢? 1.先看一个Appium加载的过程图解(来自:了解appium自动化的工作原理--https://blog.csdn.net/jffhy2017/article/details/69220719/) Appium的加载过程 1)调用Android adb完成基本的系统操作 2)向Android上部署bootstrap.jar 3)Bootstrap.jar Forward Android的端…
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 前面介绍过根据id,classname, accessibilityid,xpath来定位元素,其他这些方法底层都是利用了 UI Automator 的 API 功能实现的 UI Automator 介绍 UI Automator 测试框架提供了一组 API 来构建 UI 测试,用于在用户应用和系统应用中执行交互 利用 UI…
appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具体介绍一下关于UIautomatorviewer的元素定位: 所有的关于自动化的测试,其实都是通过定位页面的元素,识别元素来,来操作进行界面的操作,从而进行判断是否符合一个预期的结果的: 下边主要介绍一个uiautomatorviewer这个工具,uiautomatorviewer是Android-…
Appium自动化部署: 1)安装appium桌面程序安装:超链接 2)安装客户端 pip install appium-python-client 3)安装服务器 安装 Nodejs 4)连接appium服务 # 连接appium # appium服务器地址 command_executor = "http://127.0.0.1:4723/wd/hub" #默认 # 所需能力:http://appium.io/docs/cn/writing-running-appium/caps/…
appium初始化driver时,如果未安装该app会先进行安装,安装时,很多安卓手机都会弹框,需要手动确认安装. 如小米的机器, 这是个头疼的问题,之前在网上找遍了,只有通过adb去点相对坐标成功了,但是依然觉得不完美.一来没法判断是否有弹框,再者就算通过坐标比例去点,也没法保证所有系统的安装按钮都在那个相对位置. 后来突发奇想,想到一个好办法,讲下原理: 要运行appium的手机,一般至少会安装3个app,分别是输入法.Appium Settings.unlock. 既然要运行appium自…
单个接口通,自动化不通时,对比两者请求 post 请求的格式,内容编码…
在app自动化的时候,经常被问道如何知道app的包名和启动页名称.这个问题很简单: 1. 最直接的方式,去问开发啊,他们告诉你app的包名和启动页. 2. 如果你比较腼腆,又能看到/懂代码,自己把代码搞到,然后去里面扒出来. 1)如果是公司内部的app,下载最新代码,然后去代码里面找包名和启动页. 2)如果不是公司的app,就反编译一下,然后去代码里面找包名和启动页. 3. 使用adb命令去扒包名和启动页. 1)打开CMD/shell, 执行如下命令:adb shell dumpsys acti…
基本参数 参数 描述 实例 automationName 自动化测试引擎 Appium或 Selendroid platformName 手机操作系统 iOS, Android, 或 FirefoxOS platformVersion 手机操作系统版本 如: 7.1, 4.4:ios的 9.0 deviceName 手机或模拟器设备名称 android的忽略,ios如iPhone Simulator app .ipa .apk文件路径 比如/abs/path/to/my.apk或http://m…
问题思考 在混合开发的App中,经常会有内嵌的H5页面.那么这些H5页面元素该如何进行定位操作呢? 解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素定位,而Web网页是单独的B/S架构,两者的运行环境不同因此需要进行上下文(context)切换,然后对H5页面元素进行定位操作. context 关于应用程序环境的全局信息的接口. 这是一个抽象类,其实现由Android系统提供. 它允许访问特定于应用程序的资源和类,以及对应用程序级…
  前言: 本系列教程用于个人经验记录,用于他人借鉴,提供一定参考价值.经常会有一种感觉,工具或技术在某一阶段使用比较熟练,过一段时间就可能会遗忘,俗话说好记性不如烂笔头,以此记录. appium简介:       Appium是一个开源测试自动化框架,可用于原生,混合和移动Web应用程序测试. 它使用WebDriver协议驱动iOS,Android和Windows应用程序,appium是跨平台的,可以用在osx,windows以及linux桌面系统上. 工作原理 在Android端,appiu…
在日常的测试工作中,我们会发现有些测试工作重复率极高,测试人员需要花费大量的时间进行这些重复性的测试,浪费了大量的人力与时间.若能够将常用的测试场景进行自动化,那必定能节省许多的人力与时间.作为一个初次步入测试行业的小白,也十分渴望能够使用自动化来分担测试工作.上网搜索了很多的资料,了解了很多工具,再加上之前有稍微接触过Appium,所以决定使用Appium开启自动化的探索.Appium支持的脚本语言有很多,例如js.java.Python.ruby,可选择一种自己熟练的脚本语言进行编写.  …
问题: 在用robot写手机淘宝app的自动化时,打开手机淘宝后,点击天猫国际,跳转到天猫国际页面,天猫国际页面是H5, 需要切换到对应的webview,切换到webview后,点击美妆菜单,跳转到美妆页面,美妆页面也是H5, 与天猫国际页面的webview一样,如果需要在webview里滑动页面,例如向下滑动到某个元素出现在屏幕上,直接在webview中使用swipe是不行的, 因为swipe只能在NATIVE_APP中滑动,不能在webview中执行. 解决: 在美妆页面中后,先切换回NAT…
问题: 在用robot写手机淘宝app的自动化时,打开手机淘宝后,点击天猫国际,跳转到天猫国际页面,天猫国际页面是H5, 需要切换到对应的webview,切换到webview后,点击美妆菜单,跳转到美妆页面,美妆页面也是H5, 与天猫国际页面的webview一样,此时点击美妆页面的元素,提示找不到元素,用get source获取美妆页面源码, 获取到的源码是第一个天猫国际页面的源码,所以在美妆页面执行操作找不到元素. 解决: 在天猫国际页面点击美妆菜单后,先切换回NATIVE_APP,再重新切换…
实现appium的自动化,三步走,具体如下: 第一步:启动appium的服务端: 可以通过命令行的方式启动:cmd,然后输入appium,如下图 也可以打开桌面程序appium,点击右上角的运行按钮,如下图: 第二步,写自动化脚步,我这里用eclipse写的,使用appium的java客户端,如下图: 报错是因为我没有加载相应的包,加载一下就可以了,如下图红圈里面的这些包.(记得把Junit4或者是Testng也加载一下) 我先来说一下我的这个代码,我采用了MVC框架的思想,分为业务层(M),视…
常用函数 一.获得信息类API (1)获取当前页面的activity名,比如: (.ui.login.ViewPage)  current_activity() 比如我们需要实现这个登录的功能时,主要思路为如果当前界面为登录页面时,就进行登录行为,否则就跳转到登录页面.其伪代码为: 1 if driver.current_activity == ".ui.login.ViewPage": 2 // To login_action 3 else: 4 // Trun to loginPa…
1.打开 uiautomatorviewer同步的的时候突然报错 Error while obtaining UI hierarchy XML file: com.android.ddmlib.SyncException 解决:试了很多方法,重新开启uiautomatorviewer也没有解决,最后进入手机终端中,开发者模式,关闭再开启usb调试,就解决了~ 2.error: Chromedriver: Chromedriver exited unexpectedly with code nul…
自动化连接 B站 开始 如果下载node.js 的话 可以检查一下appium环境 命令行: appium-doctor 如果没有 可以安装   appium-doctor :npm install -g appium-doctor 运行代码前, 要先运行 Appium Desktop 运行 成功的状态  等待自动化程序进行链接 发出自动化指令 然后 真机进入开发者模式usb调试授权 电脑命令行检测是否连接  adb devices -l 也可下载投屏软件 进行与手机的交互(scrcpy) 查找…
如果你还想从头学起Appium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1693896.html 前言 前面我都讲的都是针对 app做UI自动化 今天我们来讲下利用手机浏览器做页面的UI自动化测试 其实跟 app 自动化的 Desired Capabilities 没啥区别,就多了个配置项而已 直接看代码 重点添加了 browserName 这个参数 from time import sleep from appium impo…
appium是一个开源框架,相对来说还不算很稳定.转载请注明出处!!!! 前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html 接下来我们研究一下测试知乎Android客户端.自行下载 配置目录如下:把知乎客户端命名为zhihu.apk 编写基于java testng的测试用例: 由于本人是熟悉selenium webdriver,所以在Android对象识别时,采用的策略和selenium…
感谢TesterHome里各种大牛,提出的宝贵思路,我这里只是将他们的想法综合了一下,试出来的成果,谢谢大家分享你们的智慧. 简单说下背景: 由于公司要测试APP 产品的耗电问题,我们采取的办法很low,对各个模块功能进行大量的手动测试,再通过Emmagee或GT得出来的结果来评估产品耗电,流量,CPU,内存的消耗等.由于手工效率太低,而且不准确,我们就决定用自动化来实现,但用自动化又面临了一个USB接电脑供电的问题,从而导致计算出来的功耗与手动跑的有很大的误差. 万般寻找,终于在Testerh…
1.安装JDK1.7及以上 2.下载解压sdk并且配置环境变量: ANDROID_HOME:...\adt-bundle-windows-x86_64-20140702\sdk PATH:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools; dos检测adb版本:如下则sdk环境配置成功! 3.安装夜神模拟器(自行百度),然后开启夜神模拟器! 4.安装appium  URL:https://github.com/appium/appium-des…