Webview相关测试(功能+性能)

article/2025/11/4 15:56:49

目录

常见的3中定位方式:

 webview操作

        1.获取所有的webview的上下文句柄

                handles=driver.getContextHandles()        

        2.切换到想要的某个上下文句柄中

                driver.context(handles.toArray()[1].toString())

         3.获取所有的窗口句柄

                windows=driver.getWindowHandles()

        4.切换到对应的窗口中

                driver.switchTo().window(窗口句柄)

Webview性能


App在执行自动化测试的时候,有时候碰到webview组件,通过appium inpector或者SDK自带的uiautomatorviewer都无法定位webview组件中的元素,这个时候通常需要浏览器开发工具来协助定位.

常见的3中定位方式:

        前提:webview开关打开,可使用6.0的模拟器,6.0存在系统bug,默认是可以调试webview的.

        在应用中启用webview调试,需在webview类里调用静态方法:

                                                Webview.setWebContentsDebuggingEnableed.

        1.在脚本中通过driver.getPageSource方法将整个页面中的内容下载为一个html文件,然后打开该html文件,利用浏览器的开发者工具定位.

        2.模拟器中打开对应的webview页面,利用chrome devtools工具实现定位:在chrome浏览器中输入chrome://inspect,在devices中可以看到模拟器中同步过来的app页面,然后点击inspect,可以进入开发者调试工具实现定位,定位方式与常见的web页面定位方式一致.

        3.下载uc devtools工具,功能同chrome devtools,但是谷歌的工具,数据同步很慢,经常出现同步失败的情况,而国内的uc devtools则是正常访问,故推荐uc devtools.

        举例三连:

 webview操作

        1.获取所有的webview的上下文句柄

                handles=driver.getContextHandles()        

        2.切换到想要的某个上下文句柄中

                driver.context(handles.toArray()[1].toString())

         3.获取所有的窗口句柄

                windows=driver.getWindowHandles()

        4.切换到对应的窗口中

                driver.switchTo().window(窗口句柄)

        脚本中实现以上4步,我们就能对webview中的控件元素进行操作了(前提是环境没问题,包括chromedriver和webview的版本对应).

Webview性能

         使用chrome://inspect工具或者uc devtools查看App Webview组件的加载情况,整个加载过程同web页面的加载过程.

   页面说明及信息指标: 

        Disable cache:不加载缓存,从0载入.

        蓝色竖线:dom出现,我们可以做click或者sendkeys操作.

        红色竖线:图片等资源加载完成.代表CSS样式加载完毕.

        Queueing(正在排队):请求再队列中排队等待的时间.

        Stalled(已停止):在队列中,停止请求.

        Waiting(等待中TTFB):服务器响应时间.

        Content Download(下载内容):下载的时间

        以上也就解释了为何自动化脚本在定位时若使用xpath定位,有时候命名元素已经出现可点击了,仍然会报错抛出no such element的异常,因为控件仅仅是出现在dom中;如果使用css selector定位方式,等待样式等静态资源都加载完毕,往往不会报错.


http://chatgpt.dhexx.cn/article/iLPIiPXx.shtml

相关文章

android---WebView实例

现在很多 App 里都内置了 Web 网页,比如电商平台淘宝、京东等。那么这种该如何实现呢?其实这是 Android 里一个叫 WebView 的组件实现的。下面将介绍 WebView 的实例。下面的实例是以组件化为基础搭建的。 新建项目 WebView,然后对整个项目做…

【webview】取消自适应让webview和电脑浏览器一样的显示

改动需求 1920x1080分辨率的Android设备上,使用webview显示效果要和电脑浏览器一样。 Android设备上效果是这样的,和PC浏览器上显示效果完全不一样。 实现方法 移除自适应代码如下: WebView newWebView (WebView) findViewById(R.id.newWe…

WebView全面解析

WebView全面解析 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面。它使用的内核是webkit引擎,4.4版本之后,直接使用Chrome作为内置网页浏览器。 作用 显示和渲染网页;可与页面JavaScript交互&…

Android【WebView】

WebView全面解析 简介 WebView是android中一个非常重要的控件,它的作用是用来展示一个web页面。它使用的内核是webkit引擎,4.4版本之后,直接使用Chrome作为内置网页浏览器。 作用 显示和渲染网页;可与页面JavaScript交互&…

初步理解 WebView

我们通常使用 Chrome, Firefox, Safari, Internet Explorer 和 Edge 等浏览器来浏览网页。你也许正在使用其中一种浏览器阅读本文!虽然浏览器对于访问互联网内容的任务来说非常流行,它们还有一些我们从未过多关注过的竞争对手。这些竞争对手以 WebView 的…

AndroidStudio之WebView详解

WebView 简介: WebView是一个基于webkit引擎、展现web页面的控件。 Android的Webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了Chrome。 作用: 1、 显示和渲染Web页面 2、 直接使用html文件(网络上或本地assets中&…

如何在uniapp中优雅地使用WebView

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 从webview页面传值到uniapp中 官方文档已经很详细了,这里给大家上我的实战代码&#xff0c;首先在webview页面中引入相关依赖&#xff1a; <!-- uniapp各平台依赖 --> <script type"tex…

Android:最全面的 Webview 详解

前言 现在很多App里都内置了Web网页&#xff08;Hyprid App&#xff09;&#xff0c;比如说很多电商平台&#xff0c;淘宝、京东、聚划算等等&#xff0c;如下图 那么这种该如何实现呢&#xff1f;其实这是Android里一个叫WebView的组件实现的。今天我将全面介绍WebView的常用…

Android 各个版本WebView

转载请注明出处 http://blog.csdn.net/typename/ powered by miechal zhao &#xff1a; miechalzhaogmail.com 前言&#xff1a; 根据Google公布的Android 各个系统版本市场占有率(Google Android dashboards), Android 4.0及其以上系统将近90%左右&#xff0c;发展趋势必…

app中的webview是什么?如何理解?

app中的webview是什么&#xff1f;如何理解&#xff1f; 当你上网阅读东西时&#xff0c;我们一般会选择一款浏览器&#xff0c;比如Chrome、火狐、safari、IE或者Edge。你可能不知道这些浏览器之间有一些竞争&#xff0c;而竞争的主要形式就是WebView。 WebView的定义 什么…

什么是webview ?

Andoid 平台&#xff0c;SDK 中有一个控件叫 WebView&#xff1b; IOS/MacOS 平台&#xff0c;SDK 中有一个控件叫 WebView/UIWebView/WKWebView(UIView/NSView)&#xff1b; 这些控件&#xff0c;用于移动端 APP 嵌入(Embed) Web 技术&#xff0c;加载 Web 内容&#xff1b;…

webview是什么,给小白的简单介绍

最近在学习uni-app&#xff0c;也会一直更新关于uni-app学习中自己遇到的问题和心得。 从uni-app的介绍看起&#xff0c;碰到了 ‘webview’ 一词&#xff0c;有必要搜罗一番。 webview是什么&#xff0c;给小白的简单介绍 百度知道 Webview含义&#xff1a;WebView也就是我…

VS下 dllimport与dllexport作用与区别

原文&#xff1a;http://www.cnblogs.com/foohack/p/4119207.html 我相信写WIN32程序的人&#xff0c;做过DLL&#xff0c;都会很清楚__declspec(dllexport)的作用&#xff0c;它就是为了省掉在DEF文件中手工定义导出哪些函数的一个方法。当然&#xff0c;如果你的DLL里全是C的…

VS BUG(5) error C2491: “****“: 不允许 dllimport 函数 的定义

VS BUG&#xff08;5&#xff09; error C2491: "****": 不允许 dllimport 函数 的定义 前言一. BUG提示二. 分析解决三. 小结 前言 程序员难免要与BUG打交道&#xff0c;本系列将记录自己在VS平台下代码调试过程中遇到的一些BUG&#xff0c;希望对大家遇到相关问题…

C#中DllImport使用法汇总

(转) 最近使用DllImport&#xff0c;从网上百度后发现&#xff0c;大部分内容都是相同&#xff0c;又从MSDN中搜集下&#xff0c;现将内容汇总&#xff0c;与大家分享。 大家在实际工作学习C#的时候&#xff0c;可能会问&#xff1a;为什么我们要为一些已经存在的功能&#xf…

dllexport和dllimport

在VS中&#xff0c;如果要跨项目使用类或变量&#xff0c;就必须用到dllexport和dllimport&#xff0c;下面分别举例全局变量&#xff0c;函数和类跨项目使用。 环境准备&#xff1a;使用VS分别新建一个windows应用程序和DLL项目&#xff0c;windows应用程序项目名称为ConsoleA…

简记C#DllImport异常

C#开发过程中&#xff0c;有些动态库引用不了&#xff0c;需要用DllImport加载该文件动态库&#xff1b; 然后在引用的过程中会碰到各种问题&#xff0c;当然网上各种回答&#xff0c;能解决大部分问题。 我在这里简单记录下问题的解决方案&#xff1a; ”尝试读取或写入受保…

关于c++动态库的dllexport和dllimport

先推荐一款比Microsoft Coplilot更好用的辅助编程工具——Cursor&#xff0c; 一款基于GPT4的新一代辅助编程神器——Cursor&#xff0c;官网介绍说是与OpenAI合作并且基于GPT4。自己体验了下&#xff0c;确实不错&#xff0c;值得尝试。 官网地址&#xff1a; Cursor | Build…

C# dllimport

一、DllImport是System.Runtime.InteropServices命名空间下的一个属性类&#xff0c;其功能是提供从非托管DLL导出的函数的必要调用信息 DllImport的定义如下&#xff1a; public class DllImportAttribute:System.Attribute { public DllImportAttribute(string dllName) {……

C#中DllImport用法和路径问题

DllImport 是System.Runtime.InteropServices命名空间下的一个属性类&#xff0c;其功能是提供从非托管DLL导出的函数的必要调用信息。 DllImport属性应应用于方法&#xff0c;要求最少要提供包含入口点的dll的名称。 文章目录 一 DllImport的定义如下&#xff1a;二 DllImpo…