Appium 关于 Appium 稳定性,使用 Appium 的进~

SongBoya · 2015年01月04日 · 最后由 小小的蜗牛 回复于 2020年02月19日 · 4322 次阅读

老大,让调研一款移动端 UI 自动化工具。我决定使用 Appium。但是我觉得稳定性并不是很好。我是个初学者。有什么问题,请见谅。跑同样的 case100 次来验证成功率,是有 70%。其他 30% 的 case 报错,均为:

An unknown server-side error occurred while processing the command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 2.39 seconds
Build info: version: '2.44.0', revision: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8', time: '2014-10-23 13:11:40'
System info: host: 'localhost', ip: '127.0.0.1', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.8.5', java.version: '1.6.0_65'
Session ID: ea395ee0-6b5a-4f1f-8467-3bcff55737e2
Driver info: io.appium.java_client.AppiumDriver
Capabilities [{platform=MAC, app=/Users/songboya/Documents/MSYiDai.app, javascriptEnabled=true, browserName=iOS, networkConnectionEnabled=false, desired={platformVersion=7.1, app=/Users/songboya/Documents/MSYiDai.app, platformName=iOS, deviceName=iPhone 5s}, locationContextEnabled=false, platformVersion=7.1, databaseEnabled=false, platformName=iOS, deviceName=iPhone 5s, webStorageEnabled=false, warnings={}, takesScreenshot=true}

我不知道什么原因造成的。想问问大家使用的时候都有类似的问题吗?往往重启一下 Appium 或者直接再次运行就没有问题了。。。我不知道是不是我操作上有问题,还是代码有问题。

现在造成我的工作很难做。。老大们嫌弃用 Appium 做自动化,还没手动的快,而且还不稳定。。。经常跑 case 莫名其妙就挂了。。。让我调研新的工具。。。不知道怎么办了。。。

共收到 26 条回复 时间 点赞

一般是页面还没刷出来,找不到元素导致的吧~
1,用最新版本的 Appium,貌似在新版本对这个错误进行了一些修复。
2,设置下超时时间,设置时间长一点。

如果开发肯配合的话,试试用 MonkeyTalk?? ____^

@april46 我们这边也遇到这样的问题,所以现在还没正式投入使用

我觉得可以先把异常出现的原因搞清楚,再增加自己代码的健壮性。过于依赖 appium 并不是好事

@weamylady 谢谢回复~超时时间设置的是 60 秒~建议设置多少秒呢?开发是不会配合的。。。我去看看 MonkeyTalk~~~衷心感谢~

@panzhigang 你们有用其他的工具吗?

@squallff 谢谢回复。。。我觉得问题应该就是一楼所说的。页面没刷出来,找不到元素导致的。。。准备设置时间长一点再看看。

@weamylady 今天早上刚下载了 1.3.4 版本的 Appium,感觉并没有提高多少~~~

#8 楼 @april46 可以看看 Appium 的实时 Log,以前我遇到这个错误的时候看 Log 都能找到原因的。

请使用插桩模式,appium 这类的都不稳定,走 tcp 的估计都够呛。

重写方法,加入超时

@lihuazhang 一句话两个名词都不懂。。。要学习的还很多 😱

#12 楼 @april46 简单的说就是可以尝试一下打败开发让开发配合一下使用 MonkeyTalk 之类的方案

@anikikun 谢谢~会调研一下 MonkeyTalk~~~

应该是命令超时, 网络不稳定导致的. appium --help |grep timeout 可以看看他的几个超时设置参数. 修改大一些.
总体来说, 基于 uiautomator 没有基于插桩稳定, 所以建议使用插桩框架, 比如 appium on selendroid 或者 robotium, monkeytalk 这种.

@seveniruby @weamylady 谢谢回复。我看了一下日志。

info: [debug] [INST] 2015-01-04 09:05:20 +0000 Debug: target.frontMostApp().elements()[0].elements()[0].elements()[2].tap()

info: [debug] [INST] 2015-01-04 09:05:21 +0000 Debug: target.frontMostApp().elements()[0].elements()[0].elements()[2].scrollToVisible()
       2015-01-04 09:05:21 +0000 Debug: target.frontMostApp().elements()[0].elements()[0].elements()[2] - scrollToVisible cannot be used because this element has no scrollable ancestor.

info: [debug] [INST] 2015-01-04 09:05:21 +0000 Debug: target.frontMostApp().elements()[0].elements()[0].elements()[2] - scrollToVisible cannot be used because this element has no scrollable ancestor.

info: [debug] [INST] 2015-01-04 09:05:21 +0000 Debug: target.frontMostApp().elements()[0].elements()[0].elements()[2] could not be tapped because the element is not visible

但是我程序里只让它 tap(),没让他 scrollToVisible()...我就不知道什么原因了 😱 😱

#16 楼 @april46 说明你定位到的元素在页面中是不可见的,你定位错了或者这个元素在页面加载过程中是不可见的。如果是后者,可以在定位这个元素之前加一个等待时间;如果是定位错了,可以换一种属性或者多种属性来定位。

info: [debug] [INST] 2015-01-04 09:05:21 +0000 Debug: target.frontMostApp().elements()[0].elements()[0].elements()[2] could not be tapped because the element is not visible
18楼 已删除

#17 楼 @weamylady 谢谢回复。我加了等待时间,没有明显的改善。偶尔还是会出现这种情况。有 60% 的情况会运行成功。这个就是第一个控件。。。只要这个找到,后面的没有出现过这种状况。

#19 楼 @april46 既然只是一个拦路虎,那就有无数种方式来解决了,直接暴力 adb shell input tap 点击坐标过去算了。你没必要较真它出来没有,大不了不找这个控件,只 Sleep 过去就完事儿了!哈哈~
当然如果想要深入一点,可以直接修改 Appium 源代码,把不可见的情况处理一下,这就是高大上的做法了。
有时候只要能解决问题,让脚本继续跑下去就行,不用花太多时间去较真,Android 本身就是碎片化的,Appium 又是开源不插桩的,不稳定正常。

楼上各种大神正解,我发表下观点,我在 ctrip 的时候,曾经一个部门努力提高自动化脚本的健壮性,不稳定是正常的,就算 appium 稳定了,自动化还是可能不稳定。

建议用工具 ranorex,支持 Android 和 ios UI 自动化。

#23 楼 @lihuazhang 高大上公司可以买,不过可以破解。

#20 楼 @weamylady 请问一下 appium 有什么方法可以获取到看不见的控件,例如 listview 中需要下滑才能看见的 item,如果边下滑边判断如何判断滑到最底部?

#25 楼 @yangha 切换到 webview,用 selenium 的方式直接操作。下拉列表的选择就用 select 之类的

xi 回复

只要没有切换页面,就可以不用下滑,直接操作元素,是可以找到的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册