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内容。
- 它需要Android 4.4或更高版本,即API级别> = 19。
- 应启用WebView调试; 开发人员必须在WebView类中启用“ setWebContentsDebuggingEnabled ”标志。此标志可以调试加载到应用程序的任何WebView中的Web内容(HTML / CSS / JavaScript)。
- 桌面和Android设备上安装版本为32或更高版本的Chrome浏览器和DESKTOP_ANDROID_CHROME_BROWSER_VERSION> = ANDROID_DEVICE _CHROME_BROWSER_VERSION
- 除此之外,只有在应用程序内启用webview调试时,Appium才会识别WebView上下文。我们可以在LOLLIPOP / KITKAT Android设备上检查webview 。
- 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下的这些元素:
使用Selendroid Inspector
使用Appium通过运行具有所需能力appium工具automationName 为“ Selendroid ”只适用于应用,其是建立Android版本<4.4
我们将使用appium服务器手动启动应用程序:
1)浏览apk以从本地文件夹启动。
2)选择所需的能力automationName 作为“ Selendroid ”和其他强制参数,如platformname,platformversion, launch活动
3)单击“播放”按钮启动服务器
4)应用程序启动。如果我们仔细查看Appium服务器运行日志,那么我们可以看到它在端口8080的本地主机上启动selendroid服务器
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}
5)要开始检查应用程序,我们点击此URL http:// localhost:8080 / inspector它将自动重定向到http:// localhost:8080 / inspector / session / 88ce8684-d785-4a24-9157-80967becc60d /取得会话ID如果selendroid服务器正在运行,现在我们可以选择检查应用程序元素,所以我们所做的是:
- 我们点击了一个带有我们从selendroid检查器获取的id的按钮,它导航我们到webview,它还为点击操作生成了等效的Java代码。
- 我们看到按钮点击webview出现,selendroid检查员生成完成webview的html源。再次像在步骤1中一样,如果我们在文本框上执行单击操作,按钮,选择下拉列表会生成等效的Java代码。
使用Chrome远程调试器
仅适用于支持Android版本4.4+或API级别> 18的应用程序。需要注意的重要一点是appium适用于API级别> 17但是chrome远程调试器适用于API级别> 18,即我们可以将此chrome功能用于API级别> 18
1)在chrome浏览器中输入“ chrome:// inspect /#devices ”
2)在使用adb列出的设备中打开启用了webview调试器的应用程序
3)点击检查链接,我们可以检查webview下的元素。
检查电子邮件文本输入字段
检查密码输入文本字段
检查登录提交按钮字段
编写脚本以自动化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 |