如何玩转app+webview混合应用自动化

WebView简介

移动平台的一个特性是能够将“  格式 ” Web浏览器嵌入“ 原生 ”应用程序中,这些应用程序称为“ webviews ”。Android开发人员使用“ android.webkit.WebView ”类在应用程序内部实现webview。类层次结构如下所示

java.lang.Object继承
  android.view.View 
     android.view.ViewGroup 
       android.widget.AbsoluteLayout 
             android.webkit.WebView

我们可以说,在一行中,混合应用程序是包含原生视图Web视图的应用程序。

Appium的 一个主要原则是提供appium优于Calabash自动化工具的优势,在Appium中,不需要更改被测试的应用程序。我们自动化同样的应用程序进入生产。Appium允许我们使用Chromedriver内置的支持来测试WebApps和混合应用程序。我们可以使用selenium webdriver现有方法来自动化webview的混合应用程序。

 

检查WebView元素的条件

我们可以使用Chrome DevTools来调试和检查Android应用程序中的WebView内容。

  1. 它需要Android 4.4或更高版本,即API级别> = 19
  2. 应启用WebView调试; 开发人员必须在WebView类中启用“ setWebContentsDebuggingEnabled 标志。此标志可以调试加载到应用程序的任何WebView中的Web内容(HTML / CSS / JavaScript)。
  3. 桌面和Android设备上安装版本为32或更高版本的Chrome浏览器和DESKTOP_ANDROID_CHROME_BROWSER_VERSION> = ANDROID_DEVICE _CHROME_BROWSER_VERSION
  4. 除此之外,只有在应用程序内启用webview调试时,Appium才会识别WebView上下文。我们可以在LOLLIPOP / KITKAT Android设备上检查webview 
  5. Appium还使用Selendroid在4.4以上的设备上支持webview。要使用appium的此功能,必须在传递给Appium服务器的所需功能中将“automationName”指定  为“selendroid” 。如果我们测试的混合应用程序是以支持最低Android版本4.0.4(API级别14)和最高Android版本4.3(API级别18)的方式构建的,那么我们可以检查webview元素并使用selendroid模式执行我们的自动化测试appium。

 

 

如何在混合应用程序中检查和自动化WebView

令人遗憾的是UIAutomatorViewer无法帮助我们检查WebView下的元素。

WebView_1
我们可以通过两种方式检查WebView下的这些元素:

 

使用Selendroid Inspector

使用Appium通过运行具有所需能力appium工具automationName 为“ Selendroid ”只适用于应用,其是建立Android版本<4.4

我们将使用appium服务器手动启动应用程序:

1)浏览apk以从本地文件夹启动。

2)选择所需的能力automationName 作为“ Selendroid ”和其他强制参数,如platformnameplatformversion, launch活动

3)单击“播放”按钮启动服务器

WebView_2
WebView_3
4)应用程序启动。如果我们仔细查看Appium服务器运行日志,那么我们可以看到它在端口8080的本地主机上启动selendroid服务器

WebView_4
5)如果selendroid服务器正常启动然后点击URL以下它将返回到json字符串下面

URL:http:// localhost:8080 / wd / hub / status

jSON字符串:{“value”:{“supportedApps”:[],“build”:{“browserName”:“selendroid”,“version”:“0.12.0”},“os”:{“arch”:“ armeabi-V7A”,”版本”:” 19“,”姓名”:”机器人”},” supportedDevices”:[]},”状态”:0}

WebView_5
5)要开始检查应用程序,我们点击此URL http:// localhost:8080 / inspector它将自动重定向到http:// localhost:8080 / inspector / session / 88ce8684-d785-4a24-9157-80967becc60d /取得会话ID如果selendroid服务器正在运行,现在我们可以选择检查应用程序元素,所以我们所做的是:

  •  我们点击了一个带有我们从selendroid检查器获取的id的按钮,它导航我们到webview,它还为点击操作生成了等效的Java代码。

WebView_6

  • 我们看到按钮点击webview出现,selendroid检查员生成完成webview的html源。再次像在步骤1中一样,如果我们在文本框上执行单击操作,按钮,选择下拉列表会生成等效的Java代码。

WebView_7
WebView_8

 

 

使用Chrome远程调试器

仅适用于支持Android版本4.4+或API级别> 18的应用程序。需要注意的重要一点是appium适用于API级别> 17但是chrome远程调试器适用于API级别> 18,即我们可以将此chrome功能用于API级别> 18

1)在chrome浏览器中输入“ chrome:// inspect /#devices ”

WebView_9
2)在使用adb列出的设备中打开启用了webview调试器的应用程序

WebView_10
3)点击检查链接,我们可以检查webview下的元素。

检查电子邮件文本输入字段

WebView_11

检查密码输入文本字段

WebView_12
检查登录提交按钮字段

WebView_13

编写脚本以自动化WebView

我们可以按照以下4个步骤自动化Webview

  • 导航到您的应用中Web视图处于活动状态的部分
  • 调用getContext()方法,该方法将返回我们可以访问的上下文列表,例如'NATIVE_APP'或'WEBVIEW_1'
  • 使用我们想要访问的上下文的id调用context()方法,即WEBVIEW_1,它是应用程序的webview上下文的名称。这将Appium会话置于一种模式,其中所有命令都被解释为用于自动化Web视图,而不是比应用程序的本机部分。例如,如果运行getElementByTagName,它将在Web视图的DOM上运行,而不是返回UIAElements / MobileElements / Native WebElements。
  • 要停止在Web视图上下文中自动化,我们可以使用id NATIVE_APP(即应用程序的名称本机上下文)再次调用上下文。

 

 

1

2

3

4

5

6

7

8

9

10

11

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值