![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
appium
文章平均质量分 84
saii
这个作者很懒,什么都没留下…
展开
-
Appium启动应用时,报错提示adb执行超时的问题解决
日志信息2021-08-02 20:10:48.447 INFO 64725 --- [c Stream Pumper] com.daxiang.utils.Terminal : [Terminal][AndroidDriver] Screen already unlocked, doing nothing2021-08-02 20:10:48.448 INFO 64725 --- [c Stream Pumper] com.daxiang.utils.Terminal原创 2021-08-03 22:52:41 · 3494 阅读 · 2 评论 -
Appium执行过程中出现部分元素xpath定位很慢的问题(10s)
最近一直在做第三方应用遍历的功能,发现appium在遍历到部分页面的时候,在查找定位元素的耗时会出现非常长的情况的,大概的耗时是10s左右。但是这个并不是在所有的app以及很多页面上出现的。日志信息从上述的日志可以看出来,通过xpath的查找需要大概10s的时间,而点击的操作需要的时间就更多了大概花了21s的时间。一旦这个页面的元素非常多的情况,这个页面的遍历时间就需要等待非常长的时间,这个是不能够接受的。分析我们知道在appium中真正执行xpath查找以及click的实际上安装在手机上.原创 2021-04-17 13:38:14 · 3040 阅读 · 9 评论 -
AppCrawler 使用中遇到问题的问题及解决
由于项目的需求,我们自己开发的一款类似于pad设备需要测试其他第三方应用的兼容问题,所以尝试用了appCrawler进行测试,以下就说下遇到的一些问题以及解决方法uiautomator server 启动后有概率出现crash的情况具体日志 大致如下INSTRUMENTATION_RESULT: shortMsg=Process crashed.[debug] [Instrumentation] INSTRUMENTATION_CODE: 0[debug] [Instrumentation].原创 2021-04-17 09:36:40 · 1632 阅读 · 20 评论 -
appium源码分析(十一)-getSize,getLocation
摘要为什么需要将这两个放到一块儿来讲呢,因为他们两实际上都是依靠UiAutomator的Bounds属性值的,并且如果说我需要获取到元素的中点坐标的话,我就需要依赖这两个方法才能够解决正文好的 我们先来看看geiSize吧,从字面的意思就是获取到它的大小,即元素的宽高了。public AndroidCommandResult execute(final AndroidCommand command)原创 2015-09-07 13:55:24 · 3779 阅读 · 0 评论 -
appium-webview应用的测试
背景:最近一段时间一直在研究appium的android自动化,虽然了解了一部分的内容,但是由于自己目前测试的应用程序不包括webview相关的内容,所以对于这方面的了解还很少。问题1:如何获取应用的context下载了公司另外一款包含了webview的应用,可是通过print driver.contexts打印出来的context只是包含了 NATIVE_APP,并没有网上很多人说的包含了WEB_原创 2015-08-21 21:36:44 · 6882 阅读 · 5 评论 -
appium 源码分析(十二)-pressKeyCode,LongPressKeyCode
摘要有的时候我们想要通过自动化来实现调节手机的音量等其他api未提供的一些方法时候,你就需要通过PressKeyCode以及LongPressKeyCode进行实现了正文我们首先先来看下PressKeyCode的源代码吧public AndroidCommandResult execute(final AndroidCommand command) throws JSONExceptio原创 2015-09-08 19:11:56 · 7678 阅读 · 0 评论 -
appium源码分析(八)-touch
摘要这次主要分析的对象时touch功能,如touchMove、touchUp、touchDown、touchLongClick。查看这些源代码的时候你会发现,他们都是继承于TouchEvent的这个类,并且execute的方法也是在TouchEvent里面实现的,所以我们有必要去看看touchEvent这个基类里面实现了那些内容正文说白了,touch类的操作也是分为两种,一种就是坐标的操作,一种是针原创 2015-08-31 13:21:38 · 1052 阅读 · 0 评论 -
Appium_Python_Api文档
1.contextscontexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可以识别H5页面的控件 :Usage: driver.contexts用法 driver.contexts2. current_contextcurren转载 2015-12-12 13:04:34 · 990 阅读 · 0 评论 -
Appium-bootstrap的调试方法
问题最近在使用appium的时候常常会有各种各样的问题,当然log已经的错误提示已经解决了我很多的问题。但是有些问题你如果不去了解它具体的实现方法的话,你是很难去真正明白log信息的意义的。这里就引申到了我们这次要讲的主题了,如何对bootstrap.jar进行调试呢。方法实际有过使用UiAutomator或者java开发经验的大概都会了解远程调试。而bootstrap.jar实际也是基于UiAut原创 2016-01-05 13:36:24 · 2650 阅读 · 0 评论 -
Android自动化-双击操作
在讲这个主题的之前,其实我想说的是在android设备里面进行双击的操作实际上是一个很奇怪的情况,目前大部分的软件基本也不会出现有说某个按钮需要通过双击来进行操作的。不过既然遇到了,就得想想怎么解决这个操作吧。问题主要还是使用的是appium。使用的过程中发现,实际上 appium并没有提供双击的接口给到我们,其实这个并不能说是appium未封装该方法,而是实际上我们看android 按钮也只是提原创 2016-01-05 23:25:07 · 4900 阅读 · 1 评论 -
Android自动化工具的选型对比
介绍目前针对于android自动化的框架或者说工具真的是五花八门。有monkeyrunner、robotium、UiAutomator,appium,CTS等。所有的自动化还是需要从实际的项目出发。MonkeyRunnerMonkeyRunner是Android SDK提供的测试工具,严格意义上来说MonkeyRunner其实是一个Api工具包。使用python语言进行编写测试用例,它的点击,输入,原创 2015-12-27 17:32:46 · 2005 阅读 · 0 评论 -
appium python action的一些分析
今天在论坛上看到一个朋友提问:action.press(x=252, y=879).wait(10000).move_to(x=540, y=879).release().perform()print '1'action.press(x=252, y=879).move_to(x=540, y=879).wait(10000).release().perform()print '2' 上原创 2016-02-16 21:55:02 · 2626 阅读 · 0 评论 -
Appium Server 源码分析(一)
姗姗来迟的 appium Server 的源码学习,其实github上 appium server的版本已经更新到了1.5的版本了,并且代码已经基本上进行重构了。但是还是出于初衷的原因吧,还是好好学些下appium server 1.4的源码,同时也学习一下nodejs吧。目录结构还是一样 我们首先来看看项目的目录结构吧,首先我们得知道程序的入口是main.js。分析再来我们逐一的来看看代码吧。p原创 2016-05-12 09:11:30 · 1902 阅读 · 0 评论 -
Appium Server 源码分析 (二) - main 方法
上一节 Appium Server 源码分析 (一) 中我们大体讲了,appium server在正确运行前做的一些判断,下来我们正式看看main 方法在看main方法之前我们可以得看看main.js引用的那一大堆第三方的模块的主要作用是什么。 变量 模块 作用 http http http模块 express express appium server 采用的是原创 2016-05-13 20:27:42 · 990 阅读 · 0 评论 -
Appium Server 源码分析 (三) - 路由及控制器
上一篇文章 Appium Server 源码分析 (二) - main 方法 中我们讲了appium的运行。下来我们得讲讲appium Server的路由以及它的控制器其实路由这块没有什么需要详细说明的,我们只要理解路由这个概念就行了,可以想象成当你访问任意一个页面的时候,都会通过路由来转发,由它转发给对应的控制器去做处理。module.exports = function (appium) {原创 2016-05-16 22:15:36 · 888 阅读 · 0 评论 -
关于Appium远程调试bootstrap的方法(Android)
摘要其实关于调试UiAutoamtor的方法网上都有详细的教程了,只是我估计很多人都是只了解下,并且可能对于bootstrap它实际上也是使用uiautomator写的一个jar都不太清楚,可以看看bootstrap的源代码:public class Bootstrap extends UiAutomatorTestCase { public void testRunServer() {原创 2015-09-02 21:16:31 · 1724 阅读 · 0 评论 -
appium源码分析(十三)-UpdateStrings
摘要其实这个应该是要放到最先的部分去将的,先说下updateStrings到底是做什么吧,它实际上就是加载我们apk文件中的string.xml将其中的内容转换成JsonObject的格式,进行保存,后续查找控件元素的时候会用到它。正文appium Server这次我们先不看源代码,我们先看看我们通过appium安装apk的时候,它都做了什么,这里我们直接截取appium Server的log吧。原创 2015-09-09 14:04:52 · 581 阅读 · 0 评论 -
Android Studio TRANSLATED IN ZH, ZH_CN……..解决办法
今天在使用友盟时,往Android Studio中导入一大堆的资源文件 导致打包程序的时候出现以上的报错解决方法在打开项目目录下的build.gradle文件(这就是gradle的配置文件,gradle就是编译工具了),然后按照提示一股脑把新参数全部加到android里面。android {…lintOptions{checkReleaseBuilds原创 2015-03-26 17:04:12 · 1874 阅读 · 0 评论 -
微信抢红包-AccessibilityService的用法。
先介绍下AccessibilityService。结构public abstract class AccessibilityService extends Service java.lang.Objectandroid.content.Context android.content.ContextWrapper原创 2015-04-01 13:45:19 · 2647 阅读 · 0 评论 -
Appium源码分析(五)-drag
首先我们来看下drag的源代码吧。@Override public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { // DragArguments is created on each execute which prevents leaking state原创 2015-08-23 16:50:12 · 1167 阅读 · 0 评论 -
关于http post json数据的写法
之前一直写http的请求都是通过开源的异步http。感觉这样子了解的内容太少了,所以就专门将一个登陆的http请求自己写了一遍。主要代码如下:原创 2015-04-02 22:48:53 · 2399 阅读 · 0 评论 -
Appium源码分析(四)-swipe
@Override public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { final Hashtable<String, Object> params = command.params(); final Point start = new Poi原创 2015-08-20 00:18:19 · 2407 阅读 · 0 评论 -
Appium源码分析(六)-find(上)
说明:原本打算按照项目的目录,将源码都分析一遍,但是其中遇到部分有些不太理解的,还有部分是依赖于另外一些代码的。所以这次特地先抽出相当重要的一块代码 find进行解释。后续的click,setText等等都是依赖于find才能够进行的,所以先抽出find来进行讲解正文:首先我们先来看看find的源代码private AndroidCommandResult execut原创 2015-08-25 20:48:41 · 1396 阅读 · 0 评论 -
appium源码分析(六)-find(下)
其实上一篇讲对find的源码分析讲的不太好,因为讲的时候,没让大家明白关于AndroidElement,以及AndroidElementsHash的定义。以及例如我们通过driver.find_element_by_name('hello').send)_keys('haha')的时候appium是根据什么来对这个元素进行操作的呢,是根据前面我们传入的hello吗?所以这次在讲find的源码剩余内容原创 2015-08-27 16:55:37 · 657 阅读 · 0 评论 -
appium-iOS设备的自动化测试环境搭建
前言最近一段时间,花了较多的精力在Android的自动化上面,但是看到网上有很多人都在研究以及学习iOS的自动化,所以昨天就抽空研究了下。做个笔记记录下。正文brew 这边提下brew的安装,brew是Mac OS不可或缺的套件管理器 执行下面命令 ruby -e “$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/inst原创 2015-08-26 11:30:31 · 4422 阅读 · 1 评论 -
Appium源码分析(七)-click
click源代码 public AndroidCommandResult execute(final AndroidCommand command) throws JSONException { if (command.isElementCommand()) { try { final AndroidElement el = command.getEl原创 2015-08-28 08:56:25 · 1188 阅读 · 1 评论 -
appium inspector的简单用法以及ios真机测试
背景最近几天拿了台mac电脑试了下appium下得ios自动化测试,开始以为appium的inspector同uiautomator一样,只要真机连接的情况下,点击inspector按钮 就可以看到ios手机界面的布局了,结果有点天真了。解决方法研究了下发现要查看到ios手机的界面布局,必须要在appium的session有效的情况下才行,所以方法有两种:直接在运行脚本的时候进行inspector原创 2015-08-31 21:55:24 · 11812 阅读 · 0 评论 -
appium源码分析(九)-getText,setText
摘要大体看了下getText以及setText方法,getText很简单,直接就是通过获取到AndroidElement中的UiObject 对象元素之后直接调用getText方法。但是setText就不是这么简单了,因为用过UiAutomator的童鞋应该都应该知道,UiAutomator是不支持中文输入的,当然如果安装第三发的输入法就另当别论了。同样appium 的desired_capabil原创 2015-09-02 13:22:36 · 2731 阅读 · 0 评论 -
appium Bootstrap UiSelectorParser源码分析
由于是从UiAutomator阵营转到appium上来的,所以留下了个不太好的习惯就是习惯性的使用appium的find_element_by_android_uiautomator 进行控件元素的定位。那疑问就来了appium又是如何通过我传入的字符串进行解析的。这里说来惭愧,实际上只是看了UiSelectorParser 但是appium到底什么时候调用它我还没去详细看过。 进入到appium原创 2015-08-05 20:38:56 · 919 阅读 · 0 评论 -
appium源码分析(十)-GetAttribute
摘要GetAttribute 实际上从字面上我们就能够明白,它是获取元素的一些属性。类似于文本内容,类名,resourId等。当然还包括了一些属性状态,如clickable,checkable等等,正文GetAttribute的代码其实挺简单的 我们来看下吧public AndroidCommandResult execute(final AndroidCommand command)原创 2015-09-03 23:51:47 · 1259 阅读 · 0 评论 -
【Android UI设计与开发】第17期:滑动菜单栏(二)开源项目SlidingMenu的示例
转载请注明出处:http://blog.csdn.net/yangyu20121224/article/details/9258275 通过上一篇文章的讲解,相信大家对于开源项目SlidingMenu都有了一个比较初步的了解(不了解的可以参考上一篇文章),那么从这一章开始,博主将会以SlidingMenu为重心,给大家带来非常丰富转载 2014-07-16 00:20:53 · 520 阅读 · 0 评论