xpath,除了 resource-id 匹配外还要 index 匹配。
#2 楼 @lihuazhang 嗯,专注确实是我现在所欠缺的。
@monkey 他说的是达峰和鬼道吧。不过鬼道是天猫的。。。
我参加过的会议不多,而且基本都是比较小的规模。这次会议是我第一次参加水平比较高的,确实收获不少。特别是收获了一些大公司里面的一些测试框架架构,这个我觉得在其他地方真不一定听得到。当然会场是有一点混乱,但毕竟都不是专业做这个的,能做到这种程度已经相当不错了。
赞,很全,而且很有层次。学习了。
小小吐槽一下,文字版的环境清单那里格式貌似乱掉了,一行里面好多文字挤在一起。。。
#9 楼 @yangxiangfu 呵呵 我干嘛。。。
不能跑的脚本长啥样?
直接用 get_contexts 获取所有 context ,然后切换到 webview 开头的 context 就好了。
点坐标不应该有这个出错啊,因为你压根就没有 element 。另外,点坐标的写错了,应该是:
action.press(5, 358).perform();
否则就没有执行 press 了。
elementId 10 could not be tapped
我之前有遇到过,这个报错主要是 uiautomation 那边抛出来的,appium 只是把它封装了一次。
相关源码:
// Gesture functions
tapById: function (elementId) {
var element = this.getElement(elementId);
var errObj = new ERROR.UnknownError(
'elementId ' + elementId + ' could not be tapped');
if (element !== null) {
try {
// element may still be null.
element.tap();
} catch (e) {
if (e.message.indexOf("(null)") !== -1) {
try {
$.target().tap(element.rect());
} catch (e2) {
throw errObj;
}
} else {
throw errObj;
}
}
} else {
throw new ERROR.UnknownError(
'elementId ' + elementId + ' is null and can\'t be tapped.');
}
}
后来我的解决方案是自己封装了一个 tapByCoordinate 方法。大致思路:
321321321e-32
的明显无效的值),如果带有 e-
,则重新再去 find (location[0]+size[0])/2
, y:(location[1]+size[1])/2
(即元素的中央位置)另外,你提到的
首先,我想到的是获取电话输入框的 xpath 来传值
这种方式不行,会直接干掉 “电话” 文本,输入后并不能保存。
干掉 “电话” 文本 是啥意思?没看懂。
微信的问题貌似不少啊。
可以打开开发者选项里的 “显示触摸操作”,看下你的 swipe 到底划了多长,是否足够滑动整个屏幕。
另外,651 到 658 这个距离应该只相当于你页面底部两个指示点之间的距离,这么短的距离当然没法划走屏幕。一般要划掉半个屏幕宽度才够。
#9 楼 @kgjinsonghao win32 只是说明它是 windows ,不代表它是 32 位。
晚些我在 appium 相关代码里加些 debug log ,然后发给你再试试?
你的 appium 版本多少?
#4 楼 @chenhengjie123 我们这边找到原因了,环境变量需要以分隔符结尾。linux 是 /
。
你可以试下在 PATH 和 JAVA_HOME 关于 java 的值末尾加个分隔符?windows 应该是 \
。
#3 楼 @kgjinsonghao 你的排版真心。。。麻烦还是改一下吧,否则很有可能还会被删帖。。。
spawn ENOENT
这个问题我们最近在 linux 上也遇到了,正在找原因和解决方法。找到后我再分享一下。
你是等到出来了 username 和 password 输入框才 get source 的吗?
#12 楼 @galactics 问题原因很明确了,404,selendroid 不支持这个方法。
#7 楼 @galactics appium server 的 log 啊。。。不是你的脚本出错 log 啊。。。
就是你在命令行运行 appium 时出现的那些信息啊。