通过Appium获取Android app中webview

  因为要测试Android app中嵌入的web页面,所以需要从native切换到webview。网上查了好多帖子,都用到类似下面代码:

//判断是否有 WEBVIEW
Set<String> contextNames = driver.getContextHandles();
for (String contextName : contextNames) {
System.out.println(contextName);
if (contextName.contains("WEBVIEW")){
driver.context(contextName);
}else
{
System.out.println("no WEBVIEW"); 
}
}

亲测,Appium1.4.16是不能这么用的。

后来就用最笨但最直接的办法,见下面代码

@AndroidFindBy(className ="android.webkit.WebView")private WebElement webView;//web页面内容容器

  

  

时间: 2024-10-04 19:22:08

通过Appium获取Android app中webview的相关文章

appium简明教程(9)——如何获取android app的Activity

有时候在appium的Desired Capabilities中需要指定被测app的appActivity,下面的方法可能会对你有所帮助. 方法一 如有你有待测项目的源码,那么直接查看源码就好.如果没有,那么请联系有源码的同学,这是推荐方法. 本文版权归乙醇所有,欢迎转载,但请注明作者与出处,严禁用于任何商业用途 方法二 如果你没有代码,那么可以反编译该app. 这里将用到2个工具,分别是dex2jar和jd-gui.你可以在这里下载目前为止的最新版本以及示例apk. 我们以工具包里的Conta

低功耗蓝牙(BLE)在 Android APP 中的应用

低功耗蓝牙(BLE)在 Android APP 中的应用 前言 最近公司接了一个新项目,用户可以把自己的乐器跟Phone或Pad连接起来,当弹奏乐器的时候,会把演奏情况同步反馈到设备上,方便用户练习,有点类似于之前玩过的一款叫[ 吉他英雄 ]的游戏.不过这次不用插线,直接蓝牙无线连接就可以了. 那么问题来了,因为弹奏的时候数据传输一直在进行,但是如果要一直打开蓝牙的话是很费电的,也许没几首曲子下来设备的电量就耗掉了不少,这当然是无法接受的.那有没有什么好的解决方案呢? 运气真好,Android在

windows8.1 App中webView 使用定位

windows8.1的webview的网页中没有办法直接定位  要想定位比较费劲   查了好久才发现一个可行的办法 那就是通过后台代码获取位置信息 然后调用页面中已有的获取位置信息的JS方法 把位置信息的经度纬度传给网页  然后在网页中加载位置信息 代码如下: async void webView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args) { Geolocator geolocato

如何获取android app的Activity

如何获取android app的Activity? 我觉得有2中方法比较好用. 第一种 a.启动待测apk b.开启日志输出:adb logcat>D:/log.txt c.关闭日志输出:ctrl+c d.查看日志 找寻: Displayed com.mm.android.hsy/.ui.LoginActivity: +3s859ms appPackage = com.mm.android.hsy appActivity = .ui.LoginActivity

Hybrid Android App中通过js访问Shared Preferences的问题

昨天研究Hybrid Android App中js和java代码之间数据共享的问题,具体场景是用户登录是android java实现,但有些业务是使用html5开发的,因此登录后到主页后,调整到某些HTML5业务页面需要传递用户的access_token,  目前想到的办法是在js端通过cordova插件访问存在Shared Preferences中的数据,但由于数据是异步返回的,需要一定的时间,有时不能及时取得数据,所以问题不能完美的解决. 目前访问Shared Preferences的Cor

获取 Android app的签名

可以利用Java的JarFile ,JarEntry,Certificate  来获取android app的签名信息 public class Do { private static final char[] wJ = "0123456789abcdef".toCharArray(); /** * 从APK中读取签名 * * @param file * @return * @throws IOException */ public String getSignaturesFromAp

如何在android app中使用STL库

方法: 1.在jni目录下新建Application.mk; 加入 APP_STL := stlport_static右边的值还可以换成下面几个: system - 使用默认最小的C++运行库,这样生成的应用体积小,内存占用小,但部分功能将无法支持 stlport_static - 使用STLport作为静态库,这项是Android开发网极力推荐的 stlport_shared - STLport作为动态库,这个可能产生兼容性和部分低版本的Android固件,目前不推荐使用. gnustl_st

Windows下部署Appium教程(Android App自动化测试框架搭建)

摘要: 1,appium是开源的移动端自动化测试框架: 2,appium可以测试原生的.混合的.以及移动端的web项目: 3,appium可以测试ios.android.firefox os: 4,appium是跨平台的,可以用在osx,windows以及linux系统上: ----------------------------------------------appium的一些基本概念---------------------------------------------- appium

JsBrage -- App中WebView与JS的交互桥梁

在Hybrid App中网页都是显示在原生的WebView中,js与原生通信都是靠WebView提供的支持方式来实现的,而将这个实现方式抽象封装出来的模块,就是JsBrage. Android: 对于Android调用JS代码的方法有2种: 1. 通过WebView的loadUrl(),目前项目中用的这种方式 mWebView.loadUrl("file:///android_asset/javascript.html"); mWebView.loadUrl("javascr