Appium Appium 如何获取 fiddler 中的 URL

失忆的金鱼 · July 04, 2016 · Last by chen replied at July 18, 2016 · 1734 hits

想要获取微信页面中的 URL

通过 fiddler 可以获取到微信中某页面的 URL,如下图:

Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
    System.out.println(contextNames); 
}

appium 打印出来为 NATIVE_APP

尝试使用 driver.getCurrentUrl();等都提示错误(org.openqa.selenium.WebDriverException: Not yet implemented.)

大师们,如何获取微信页面中的 URL 呢?或者有其他自动化工具解决此问题吗?

共收到 7 条回复 时间 点赞

确认页面是内嵌的 webview 之后,切换之前做一下等待~

try {

            Set<String> contextNames = driver.getContextHandles();
            for ( String contextName : contextNames )
            {
                if ( contextName.contains( "WEBVIEW" ) ||contextName.contains( "webview" ) ){
                    contextName = contextName.substring( 0,contextName.indexOf( "_" ) );
                    System.out.println( "contextName:" + contextName );
                    driver.context( contextName );
                    System.out.println( "[-设备-] :  xxx" +
                         " [-Success-]<<  步骤: 切换WEBVIEW  Url:" +
                         driver.getCurrentUrl() );
                              break;
                }
            }
        } catch ( Exception Error ) {
                    Error.printStackTrace();
        }
    }
  1. 你是安卓还是 iOS ?安卓的话无解,因为微信里面 webview 用的是 QQ 浏览器内核,appium 不支持。
  2. 能检测到 webview 的前提是代码里开了 webview 的 debug 开关。这个开关默认都是关的,你要让开发在代码里打开它。

#2 楼 @chenhengjie123
1、是这个原因呀,我的是安卓系统。
2、appium 不支持,有其他工具可以支持吗?

#3 楼 @lilychow 如果是手动获取一些调试信息(如你说的 url),可以看下 各种 真机远程调试 方法 汇总,以及微信官方给的调试工具 http://bbs.mb.qq.com/thread-295889-1-1.html

如果是用工具做 UI 自动化,我目前没听说哪个工具可以支持。

@chenhengjie123 能检测到 webview,却切换失败。这是什么原因呢?

driver.contexts
[u'NATIVE_APP', u'WEBVIEW_com.android.browser']
driver.switch_to.context('WEBVIEW_com.android.browser')
等到直到 session 关闭也没反应了。

#5 楼 @superbaby11 感觉你这个内容和这个帖子关系不大,建议你另外开一个帖子并附上测试环境、测试脚本、 server log 等相应信息吧。

转换 webview 成功,如何获取 当前 webView 的 url,driver.getCurrentUrl() 获取到的 url 不是 webview 的 URL

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up