我画的不只是萝莉,还是老婆
Appium 中的 JS 就是基于 mocha 的,如果受不了 Promise 的写法,可以使用这个包来写:yiewd。
我感觉 node 和 python 写法应该差不多 (就两行):
contexts = yield driver.contexts();
yield driver.context(contexts[contexts.length - 1]);
你上面的切换写死了 context:WEBVIEW_com.sina.book
,你咋能确定当前手机当前 APP 当前 WebView 的 context 是这个呢?不是这个 Appium 会报错,你需要先用 Appium 自己取读取这个值,具体方法你得查 WD 的 API。
我写的例子是用 Node 的。错误日志,最好看 Appium 的 log。
切换到 APP 中的 webview,首先要得到这个 webview 对应的上下文(context),wd 中有个方法可以获取当前全部的 contexts,一般 APP 里面每个 webview 对应的 context 都不同,在不同机器上也不会相同,你不能写死了,要先把 contexts 取到。
比方你刚刚打开了一个 webview,这个时候 contexts 的最后一个字符串就是这个 webview 的 context。
先获取全部的 contexts:
const contexts = yield driver.contexts();
contexts 是个数组,第一个是原生,例如是:NATIVE_APP
。每打开一个 webview,contexts 数组就会插进来一个值,contexts[contexts.length -1]
就是当前的 context 了,然后切换一下:
yield driver.context(contexts[contexts.length -1];
我觉得你这个思路不对:
findElementByName()
是可以找到该元素,但是无法点击,因为该元素不在可见区域。wd 中有个方法是isDisplayed()
,可以判断所需元素是否可见,可见则点击,看不见则下滑,以下是个 node 的例子:
let element, flag = true;
while(true) {
element = yield driver.elementByName('客户A').isDisplayed();
if (element) {
yield driver.elementByName('客户A').click();
flag = false;
} else {
yield driver.swipe_up();
}
}
ios 的安装包得是 .app
格式的
#7 楼 @wangjl726 我也刚学不久,是个菜鸡,一起学习
#4 楼 @wxhhxx123 Appium1.6.x 的没有,推荐用 Macaca 的 App Inspector
使用 XCUITest 启动:
appium --platform-name iOS --automation-name XCUITest
#3 楼 @seveniruby
都是常用的插件:
我画的不只是萝莉,还是老婆