那我就不清楚了。
你试下去搜索 chromedriver ,看它不回应时从哪里能找到一些 log 信息?
或者直接用 chromedriver 来运行你的测试试试?
收藏了!
#3 楼 @anikikun 你上 stackoverflow 查一下?
我找到这个http://stackoverflow.com/questions/20961417/android-util-androidexception-instrumentation-failed
没实际做过,仅仅抛个砖。。。等待大神们解答
自动掉线、消息无法送达这有可能是弱网络或者是客户端内部数据包没发出。
如果是定位问题的话,可以在网络良好的环境下用抓包工具看看 app 的网络通讯是否正常,会不会出现应该发包的地方实际上没有发包。如果都有发包,那有可能是弱网络下 app 重试发包的次数太少,直接看源码看看重发次数是多少,然后配置弱网络(参考http://testerhome.com/topics/482),修改重发次数来看看效果如何。
这标题太简洁了……建议改成更能表达帖子意思的标题。。。
返回键是可以模拟的,就是一个 KeyEvent ,adb 命令就能干这活。不过你需要先确定你一路按返回键能返回主界面。
你的这个功能其实相当于用例失败时自动执行的内容,单元测试框架的话用 tearDown 函数来做(tearDown 是无论用例执行情况如何都会执行的),如果不想每个用例都要加,那就在执行用例的那个语句加个 try catch ,捕捉找不到元素的异常或者点击异常,然后执行你那个一路返回的用例/脚本,再把异常改为用例失败的异常。
不过这么做就变得把用例的内容引入到执行框架了,你要考虑清楚你的框架是否需要保持通用性,不需要的话就加到框架里吧。
#10 楼 @sunrise find_element_by_name 不是匹配 value 的。你的 "北京" 是 value 的值。
参考:http://selendroid.io/native.html#name
而且你的 Log 里面的 xml 有点怪,有些节点名称我也没见过,如 NovaTextView,不知道是不是自定义控件。
不过用 xpath 应该能找到啊。你的 xpath 怎么写的?
从上面的 log 来看,你的元素有找到啊(服务器返回 200 ),只是 tap 那里有问题。可惜最重要的 tap 动作的 log 你没截到。。。
我的治懒方法:搞个 deadline(和别人有合作的事情),或者把自己懒的时间尽可能延长,懒到你觉得无聊为止(我属于同一件事干太长时间就会觉得无聊的人,就算打游戏我也打不了超过 4 个小时,目前只有研究技术/编程能让我连续 4 小时以上保持专注)。
#9 楼 @weamylady 我这里没出现过这个问题哦。
你也是 chromedriver 起来后没反应?你试试直接用 chromedriver ,不用 appium 看有没有问题?
正常来说用 chrome 浏览器能看到的 webview chromedriver 应该都能控制。
谢谢分享!不过上面的代码看起来是 object-c 吧?能否把这段代码的详细用法说一下?否则后面想用也不知道怎么用了。
另外,麻烦按照论坛规范,使用代码块和添加头像吧。
@doctorq 有个地方我提议详细描述一下:
UIAUTOMATOR STDOUT是系统执行 uiautomator 时显示在 shell 中的信息(在操作系统层面都称为 STDOUT ,即标准输出 (对应地,标准输入为 STDIN,错误输出为 STDERR)。我们编程中使用 print 语句输出的对象就是 STDOUT ),BOOTSTRAP 是 bootstrap.jar 内部的 socket server 与 appium server 通讯的信息(通过 bootstrap port 输出),我觉得意义上这才是 bootstrap 内部操作的 log 。
单纯说 脚本输出 我觉得有些人可能会误解为是 bootstrap 让这些东西输出的,因为实质上是 UIAutomator 的执行过程自动输出的。
大赞,同通过《第一行代码 Android》学习 Android 开发中。
学习到后面你会发现 Fragment 也有生命周期的,而且比 activity 更好玩!
#3 楼 @ivy8_zhang 那就是不能通过 keyevent 来输入了(sendkey 在 UIAutomator 里本质上是发送 keyevent )。如果真的需要纯自动化输入,只能图像识别了。