还未发布过话题
  • @chenhengjie123
    我复现了http://www.cnblogs.com/tobecrazy/p/4905917.html 里面提到的 android.webkit.WebView 可以当成 Nativ_App 处理。单纯调用 Bootstrap 里面的 source 方法没法获取到 android.webkit.WebView 里面的元素,但是 getPageSource 方法就可以。getPageSource 好像是 selenium 里面的方法,你知道它除了调用 Bootstrap 里面的 source 方法外还做了什么吗?谢谢!

  • @chenhengjie123 @seveniruby 我使用的 Appium 版本是 1.4.16.1,测试的天猫 10002119@tmallandroid_5.16.0.apk
    打开天猫顶栏的 banner,里面是一个 android.webkit.WebView,Inspector 可以识别到里面的 android.view.View 以及 android.widget.ListView。有个现象是 Appium 对待测 APK 做了 debug 签名,导致 apk 在内容展示上跟安装原始版本有一定差异。
    我打算跟一下 switch_context 和 pageSource,看看 Inspector 的刷新操作到底是一个什么流程。看能否把这个动作移植到手机上?
    做这个分析的背景是,我们做了一个 app 的遍历工具,基于 uiautomator 在手机上运行,所以希望同样能在手机识别 webview 元素。
    请两位赐教!多谢!

  • App 自动遍历工具初版 at 2016年03月10日

    @seveniruby 从 Appium 的日志分析,Inspector 工具的 Refresh 操作是通过 BootStrap 里面的 source 实现的,并没有调用 chromedriver 和 android-hybrid.js,就直接获取到 WebView 的内容了。请教 Appium 如何获取 Hybrid App 里 webivew 的页面元素呢,是在哪部分实现的?非常感谢!

  • @chenhengjie123 今天做的验证:
    1.将 chromedriver 移除,通过 Inspector 仍然可以识别 webview 里面的页面元素
    2.将 Appium Server 保持启动,使用 uiautomatorviewer 同样可以识别该 App 的页面元素,换 App 无效,停止 Appium Server 无效
    3.并未进入 android-hybrid.js 和 selendroid.js(未打印调试日志)
    请教 Appium 是通过什么方式获取到 webview 里面的页面元素呢?应该关注哪部分代码?非常感谢!

  • @chenhengjie123
    非常感谢您的答复,
    1.从日志看,Refresh 操作的确是调用了 Bootstrap 里面的 source 方法。
    2.从 Inspector 的界面上看,的确是获取到了 webview 元素,以天猫 apk 为例,首页的 banner 点击进去是 webview 的,使用 uiautomatorviewer 只能识别是 webview,内容看不到,但是 Inspector 就识别出来了,不解的是,在 Appium 打开的情况下,uiautomatorviewer 也可以获取到 webview 里面的内容。
    3.不太明白 chromedriver 在整个过程中的作用,因为我把 build 目录下的 chromedriver 移走,Inspector 还是可用(webview 元素可以识别)
    4.我们想要实现的是在手机中用类似 uiautomator 的方法获取 webview 的元素,这样 app 的遍历测试工具可以对 webview 做进一步的遍历测试。

  • @chenhengjie123
    我的 QQ 号是 348940981,最近在研究如何在手机上识别 WebView 元素,我用最新的 Appium Inspector 查看天猫 Apk,点击 Refresh,通过日志发现它把 apk 做了 debug 重签名,然后调用了 Bootstrap 里面的 source 命令,在 Inspector 的界面上就可以看到当前 App 页面的控件树。
    想请教大家,Refresh 操作是通过 source 实现的吗?能够直接获取到 WebView 的内容?
    https://github.com/appium/appium/blob/master/lib/devices/android/android-hybrid.js又在什么时候起的作用呢?
    最重要的问题是不依赖 PC 端的 chromedriver,能直接在手机端获取 WebView 元素么?
    还请大家不吝赐教,谢谢了!

  • @zsx10110 @x746560359
    我的 QQ 号是 348940981,最近在研究如何在手机上识别 WebView 元素,我用最新的 Appium Inspector 查看天猫 Apk,点击 Refresh,通过日志发现它把 apk 做了 debug 重签名,然后调用了 Bootstrap 里面的 source 命令,在 Inspector 的界面上就可以看到当前 App 页面的控件树。
    想请教大家,Refresh 操作是通过 source 实现的吗?能够直接获取到 WebView 的内容?
    https://github.com/appium/appium/blob/master/lib/devices/android/android-hybrid.js又在什么时候起的作用呢?
    最重要的问题是不依赖 PC 端的 chromedriver,能直接在手机端获取 WebView 元素么?
    还请大家不吝赐教,谢谢了!

  • Appium WebView 初探 at 2016年03月08日

    @zsx10110 @happystone
    最近在研究如何在手机上识别 WebView 元素,我用最新的 Appium Inspector 查看天猫 Apk,点击 Refresh,通过日志发现它把 apk 做了 debug 重签名,然后调用了 Bootstrap 里面的 source 命令,在 Inspector 的界面上就可以看到当前 App 页面的控件树。
    想请教大家,Refresh 操作是通过 source 实现的吗?能够直接获取到 WebView 的内容?
    https://github.com/appium/appium/blob/master/lib/devices/android/android-hybrid.js又在什么时候起的作用呢?
    最重要的问题是不依赖 PC 端的 chromedriver,能直接在手机端获取 WebView 元素么?
    还请大家不吝赐教,谢谢了!我的 QQ 号是 348940981,