首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

APPIUM ANDROID混合应用程序:从混合应用程序中的本机导航到web视图时,无法获取驱动程序上下文'WEBVIEW‘

Appium 是一个开源的自动化测试框架,用于移动应用的 UI 测试。它支持 iOS 和 Android 平台,并且能够测试原生应用、混合应用以及 Web 应用。在混合应用测试中,经常会遇到需要在原生视图和 WebView 视图之间切换的情况。

基础概念

混合应用:混合应用是指结合了原生应用和 Web 技术的应用程序。它们通常使用 WebView 组件来加载 Web 内容,并且可以与原生代码进行交互。

Appium 上下文切换:Appium 允许测试脚本在不同的上下文之间切换,例如从原生应用上下文切换到 WebView 上下文。上下文切换是通过获取当前所有可用的上下文列表,并选择特定的上下文来实现的。

相关优势

  • 跨平台测试:Appium 支持多种平台,可以在不同的设备上运行相同的测试脚本。
  • 灵活性:可以测试原生应用、混合应用和 Web 应用。
  • 社区支持:Appium 有一个活跃的社区,提供了大量的文档和资源。

类型

  • 原生应用测试:直接测试应用的 UI 元素。
  • 混合应用测试:测试 WebView 中的 Web 内容以及与原生部分的交互。
  • Web 应用测试:在浏览器或 WebView 中测试 Web 页面。

应用场景

  • 自动化回归测试:确保应用的功能在不同版本和设备上保持一致。
  • UI 自动化:模拟用户操作,进行界面功能的自动化验证。
  • 性能测试:评估应用在不同条件下的性能表现。

遇到的问题及原因

当从混合应用程序中的本机导航到 WebView 时,可能会遇到无法获取驱动程序上下文 'WEBVIEW' 的问题。这通常是由于以下原因造成的:

  1. WebView 上下文未正确加载:可能是因为 WebView 还没有完全加载完成,导致 Appium 无法识别到 WebView 上下文。
  2. 权限问题:在某些情况下,可能需要为 Appium 赋予额外的权限才能访问 WebView 的内容。
  3. Appium 版本兼容性:使用的 Appium 版本可能与应用的 WebView 版本不兼容。
  4. 配置问题:Appium 的配置可能没有正确设置,导致无法正确识别和切换上下文。

解决方法

  1. 等待 WebView 加载:在尝试切换上下文之前,使用适当的等待机制确保 WebView 已经加载完成。
代码语言:txt
复制
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

desired_caps = {
    'platformName': 'Android',
    'deviceName': 'device',
    'appPackage': 'com.example.app',
    'appActivity': '.MainActivity'
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

# 等待 WebView 上下文出现
WebDriverWait(driver, 20).until(EC.presence_of_element_located((By.ID, "webview")))
  1. 检查权限:确保 Appium 有足够的权限访问 WebView。
  2. 更新 Appium 和相关依赖:确保使用的是最新版本的 Appium 和相关的依赖库。
  3. 配置 Appium:确保 Appium 的配置正确,例如启用 WebView 的调试功能。
代码语言:txt
复制
desired_caps['chromedriverExecutable'] = '/path/to/chromedriver'
desired_caps['androidDeviceReadyTimeout'] = 30
desired_caps['androidUseRunningApp'] = True
  1. 手动切换上下文:如果自动切换失败,可以尝试手动获取上下文列表并切换。
代码语言:txt
复制
contexts = driver.contexts
for context in contexts:
    if 'WEBVIEW' in context:
        driver.switch_to.context(context)
        break

通过以上步骤,通常可以解决从混合应用程序中的本机导航到 WebView 时无法获取驱动程序上下文 'WEBVIEW' 的问题。如果问题仍然存在,可能需要进一步检查应用的 WebView 配置或者 Appium 的日志输出以确定具体的原因。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

自动化-Appium-​第一个Demo-混合(Python版)

第一个Demo-混合 什么是Hybrid(混合)? App是移动混合应用程序,即在移动应用程序中嵌入了Webview,通过Webview访问网页。...移动应用和Webview分别属于两个不同的上下文,移动应用默认的Context为”NATIVE_APP”,Webview默认的Context为”WEBVIEW_被测进程名称”。...测试Webview中的网页内容时,需要切换到Webview的Context下。 第1章 Android 1.1创建项目 1、启动PyCharm,创建My_Appium_Demo项目。...6、接下来开始使用查找元素定位工具来获取元素的属性值等信息,那怎么知道所要测试的应用程序是否是混合型的呢?...5、接下来开始使用查找元素定位工具来获取元素的属性值等信息,那怎么知道所要测试的应用程序是否是混合型的呢?

2.6K20

自动化-Appium-第一个Demo-混合(Java版)

第一个Demo-混合 什么是Hybrid(混合)? App是移动混合应用程序,即在移动应用程序中嵌入了Webview,通过Webview访问网页。...移动应用和Webview分别属于两个不同的上下文,移动应用默认的Context为”NATIVE_APP”,Webview默认的Context为”WEBVIEW_被测进程名称”。...测试Webview中的网页内容时,需要切换到Webview的Context下。 第1章 Android 1.1创建项目 1、启动Eclipse,鼠标右键New--->Project。...6、接下来开始使用查找元素定位工具来获取元素的属性值等信息,那怎么知道所要测试的应用程序是否是混合型的呢?...5、接下来开始使用查找元素定位工具来获取元素的属性值等信息,那怎么知道所要测试的应用程序是否是混合型的呢?

2.6K30
  • Appium面试题

    11、在Appium的上下文中解释Appium Session? 12、测试人员在使用Appium时可以在多线程环境中运行测试吗?...2、提⼀下Appium的优缺点? Appium的优点: Appium 是⼀个开源应⽤程序,这意味着它可以免费下载并且设置简单。 它可⽤于在混合、本机和 Web 应⽤程序上运⾏⾃动化测试。...当 HTML5 发布时,⼈们了解到他们可以在浏览器中拥有类似本机的功能,并且 Web 应⽤程序变得⾮常流⾏。设备功能在移动 Web 应⽤程序中不可⽤。...混合应⽤程序:嵌⼊在设备上运⾏并使⽤ Web 技术创建的本机应⽤程序的 Web 应⽤程序称为混合应⽤程序(HTML5、CSS 和JavaScript)。...Web到本机的抽象层使您可以访问移动 Web 应⽤程序中不可⽤的设备功能,例如加速度计、摄像头和本地存储。混合应⽤程序不限于单⼀平台或移动设备。因此,⼀旦构建,它就可以在任何设备上运⾏。

    4.5K10

    【Android】WebView 应用模版 ( WebView 设置 | 设置 WebSettings | 启用调试模式 | 设置 WebChromeClient )

    , 否则大部分网页都无法使用 ; settings.javaScriptEnabled = true // 支持 JavaScript 启用 DOM 存储 DOM 存储是一种 在 Web 应用程序中存储数据的机制...// 设置是否启用 DOM 存储 // DOM 存储是一种在 Web 应用程序中存储数据的机制,它使用 JavaScript 对象和属性来存储和检索数据 settings.domStorageEnabled...和 https 混合加载 , 否则部分页面将无法加载 ; 当 mixedContentMode 属性设置为 WebSettings.MIXED_CONTENT_ALWAYS_ALLOW 时,WebView...在宽视图端口模式下,WebView 会将页面缩小到适应屏幕的宽度。 这意味着用户在浏览网页时无需进行横向滚动,但可能会使网页缩小得过多,影响可读性。...请注意,调试模式可能会对性能产生一些影响,因此应该仅在需要调试 WebView 中的网页和代码时才启用它。

    3.2K20

    Android H5元素定位

    问题思考 在混合开发的App中,经常会有内嵌的H5页面。那么这些H5页面元素该如何进行定位操作呢?...解决思路 针对这种场景直接使用前面所讲的方法来进行定位是行不通的,因为前面的都是基于Andriod原生控件进行元素定位,而Web网页是单独的B/S架构,两者的运行环境不同因此需要进行上下文(context...context 简介 Context的中文翻译为:语境; 上下文; 背景; 环境,在开发中我们经常说“上下文”,那么这个“上下文”到底是指什么意思呢?...WebView版本查看 方法一:手机上设置中查看:设置-->应用程序管理-->全部-->Android System WebView 方式二:直接在浏览器中打开地址:https://liulanmi.com...在自动化脚本中,进入到对应的H5页面,打印输出当前context,如果一直显示为Natvie App,则webview未开启。

    3.4K20

    .NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法

    控件的导航事件 .NET混合开发解决方案10 WebView2控件调用网页JS方法   在我的博客《.NET混合开发解决方案10 WebView2控件调用网页JS方法》中介绍了C#调用网页中定义的JavaScript...WebView2控件通过将对象传递到Web网页,使应用程序能够弥合web和本机应用程序(客户端程序:WinForm、WPF、WinUI、Win32)之间的鸿沟。...在开发WebView2应用程序时,需要一个本机对象,它的方法或属性很有用。开发者希望从web端代码触发这些本机对象方法,或者作为应用程序web端用户交互的结果。...比如在网页中调用客户端电脑的摄像头,如果在Web端开发,则编写大量的代码。如果在本机实现,则非常简单。能够调用本机对象的方法比在应用程序的web端重新编码对象的方法更快、效率更高。...在这种情况下,本机端代码可以将对象传递到应用程序的web端JavaScript代码,以便JavaScript代码可以重用本机API的方法。

    11.1K10

    Appium自动化测试框架

    ,Appium会往对应安卓手机上推送一个Bootstrap.jar并运行它,当我们自动化测试程序向appium发送请求时,appium向Boostrap.jar发送请求,由Bootstrap.jar转发请求到安卓手机底层的自动化测试框架...webView–>web页面上来的时候,则无法生效,需要进行特殊处理。...选择第二个选项 ---- Hybrid自动化测试脚本编写 我们需要一个Hybrid的线上app进行测试,这里选择58同城 先进入到某个web界面后,再进行下面这些操作 每一种页面都存在一种上下文...,要定位到web页面里面的元素,需要切换到对应的context中,然后进行元素定位。...打开58同城,点击某个页面,如果在UC开发者工具,看到了该页面对应的链接,说明是h5页面,否则说明是原生页面 具体模板代码如下 //1.进入web页面中---text文本值定位到新车元素

    2.1K30

    Appium+python自动化(十四)- 与Capability完美懈垢之解读(超详解)

    autoWebview 直接进入Webview上下文。...例如, true enablePerformanceLogging (仅限Web和webview)启用Chromedriver(在Android上)或Safari(在iOS上)性能记录(默认false)...path/to/webdriver autoWebviewTimeout 等待Webview上下文激活的时间(以毫秒为单位)。...3.3 ios独有Capability   在我选择appium时,最主要是因为他能够同时支持ios和android,在基础参数配置中ios也有他自己的独一份,不和android一样,下面我们大概介绍一下...例如, 100 showIOSLog 是否显示从appium日志中的设备捕获的任何日志。默认false true 要么 false sendKeyStrategy 用于将测试类型输入测试领域的策略。

    3.4K50

    Appium自动化测试框架探索与实践

    含义 Appium是一个主流且开源的移动应用自动化测试框架,支持iOS和Android平台上的移动原生应用、移动Web应用和混合应用的自动化测试。...Web浏览器基本没有区别,只不过移动端的Web浏览器所依附的操作系统不再是Windows或Linux,而是iOS和Android; 混合应用指的是介于Web应用和原生应用两者之间的一种应用形式,...混合应用利用Web应用和原生应用的优点,通过原生容器展示H5页面,即在原生应用中嵌入Webview,通过Webview访问该页面。...对于内嵌H5的混合应用来说,原生态页面和Webview分别属于两个不同的上下文(Context),原生页面默认的Context是“NATIVE_APP”,而Webview默认的Context为“WEBVIEW...六、总结 Appium从入门到精通,小编还需再接再厉~ 搜狗测试微信号:Qa_xiaoming 搜狗测试QQ粉丝群:459645679

    3K20

    自动化-Appium-简介

    简介 Appium是一个开源自动化测试工具,用于在IOS移动平台、Android移动平台和Windows桌面平台上自动化本地、移动Web和混合应用程序。...本机应用程序是那些使用IOS、Android或Windows SDK编写的应用程序。...移动网络应用是使用移动浏览器访问的web应用程序(Appium支持IOS上的Safari,支持Android上的Chrome或内置的“浏览器”应用程序)。...混合应用程序在“WebDriver”上有一个包装器,支持与web内容交互的本机控件。 Appium是跨平台的,它允许您使用相同的API编写针对多个平台(IOS、Android、Windows)的测试。...这样,我们就不需要在任何特定于Appium的代码或第三方代码或框架中为应用程序编译。

    1.5K20

    聊聊 Python 做微信小程序自动化,那些踩过的坑?

    因此,我们启动 Appium Server 的正确步骤如下: 首先,Chrome 中输入 chrome://inspect/#devices,查看 WebView 的版本号 ?...上下文及进程 由于微信存在多个上下文,要对 Web 页面控件元素进行操作,必须先切换到对应的上下文 和 Selenium 类型,只需要找出所有的上下文,并筛选出当前合适的上下文即可 为了保证上下文能正确获取到...,最好在获取之前强行等待几秒 # 所有的上下文 print(driver.contexts) # 切换到对应Web的上下文 driver.switch_to.context('WEBVIEW_com.tencent.mm...""" 在webview中查找元素,涉及到切换窗口句柄:handle :return: """ # 获取所有的handle all_handles = driver.window_handles...最后 使用 Appium 做微信小程序自动化遇到的坑主要就上面这些,其他操作和原生、混合应用类似,这里就不详细展开说明。

    2.4K1512

    使用 Cordova 构建应用的流程

    下图展示了 Cordova 应用程序体系结构的高级视图。 WebView 启用 cordova 的 WebView 可以为应用程序提供其整个用户界面。...在某些平台上,它还可以是一个更大的混合应用程序中的一个组件,该混合应用程序将 WebView 与本地应用程序组件混合在一起。 (详见嵌入 WebViews。)...它们为 Cordova 和本地组件提供了一个相互通信和绑定到标准设备 api 的接口。 这使你能够从 JavaScript 调用本机代码。 预装环境 下载并安装 Node.js。...本节将继续演示示例 echo 插件,该插件可以从 Cordova webview 与本机平台之间进行通信。 另一个示例请参见 CordovaPlugin.java 中的注释。...具有长时间运行的请求、后台活动(如媒体播放、侦听器或内部状态)的插件应该实现 onReset ()方法。 它在 WebView 导航到新页面或刷新时执行,这会重新加载 JavaScript。

    4.3K11

    Appium上下文和H5测试(一)

    包括立即购买、下载、打开这样的东西都没有。而是作为中间整屏放在一起的。 从图片中可以看出,上面是原生控件,下面是 Html 页面。所以,这个就是混合应用。 ?...安卓手机的很多 Api 都是谷歌开发的,所以基本上只能用谷歌 Web View 了。也得安装 Chrome driver,得有驱动程序还得跟浏览器版本匹配。...从外面点击进来的时候,外面是一个原生控件,从一个原生控件点击之后,切换到一个 Html 页面中操作,它们俩很显然是不一样的东西。一个是 Html,一个是安卓控件。...识别到 Web View 的前提是:下载知乎或者豆瓣,去获取所有当前可以操作的上下文,会发现没有 web view。也就是关闭了 Web View 的显示。...安装完毕后,它是没有桌面标识的,可以在开始-你的应用程序中找到它。 注意:这个工具只识别 Web View,如果手机打开的页面中有 Web View 网页,能识别到的情况下这里才会显示。

    1K20

    Appium上下文和H5测试(一)

    包括立即购买、下载、打开这样的东西都没有。而是作为中间整屏放在一起的。 从图片中可以看出,上面是原生控件,下面是 Html 页面。所以,这个就是混合应用。...安卓手机的很多 Api 都是谷歌开发的,所以基本上只能用谷歌 Web View 了。也得安装 Chrome driver,得有驱动程序还得跟浏览器版本匹配。...从外面点击进来的时候,外面是一个原生控件,从一个原生控件点击之后,切换到一个 Html 页面中操作,它们俩很显然是不一样的东西。一个是 Html,一个是安卓控件。...识别到 Web View 的前提是:下载知乎或者豆瓣,去获取所有当前可以操作的上下文,会发现没有 web view。也就是关闭了 Web View 的显示。...安装完毕后,它是没有桌面标识的,可以在开始-你的应用程序中找到它。 注意:这个工具只识别 Web View,如果手机打开的页面中有 Web View 网页,能识别到的情况下这里才会显示。

    69840

    App自动化测试|Appium介绍

    App自动化测试|Appium介绍图片Appium简介Appium是一个开源工具,用于自动化iOS手机、Android手机和Windows桌面平台上的原生、移动Web和混合应用。...如安卓自带的计算器等;移动Web应用:是用移动端浏览器访问的应用(Appium支持iOS上的Safari、Chrome和Android上的内置浏览器)。...如手机百度网等;混合应用:带有一个「webview」的包装器——用来和Web内容交互的原生控件。如腾讯新闻、淘宝app等。...Server就是Appium的服务端——一个web接口服务,使用Node.js实现Appium-Desktop:Appium Desktop是一款适用于Mac,Windows和Linux的开源应用程序...就像我们浏览器访问网页,浏览器是客户端,通过操作发送请求服务器来获取数据。我们可以使用不同的客户端浏览器(IE,Firefox,Chrome)访问一个网站。

    1.2K10

    Appium:轻松玩转app+webview混合应用自动化测试

    页面和webview页面,而UiAutomator是不能直接操 作混合型app中的webview页面。...[9kp31gs.png] 在执行自动化命令时,首先通过appium client(各种语言均有对应的client)将命令发送至appium 服务器,appium服务器会将解析到的结果发送至手机。...然而上述方法有两个缺陷可能导致你无法获取webview,首先,绝大多数应用是不会开启webview的debug模式,第二,切换webview的情况会受到网络状态的影响,如果是内部代理的网络则会导致你无法操作...偶然间看到有人说android 6.0以上系统,无需切换webview模式就可以测试app中的webview,通过appium打开webview后,使用UiAutoviewver可以看到,webview...监听类可以获取到当前的driver信息,如上图,arg2是从用例中传递过来的driver,通过执行driver对应的方法可以操作页面元素,arg0为用例中findElement的参数,通过该参数可以确定用例执行位置

    9.7K10

    App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》

    二、元素操作 这个跟 Web 自动化有些通用的操作之外,它有一些额外的操作。例如:滑屏操作、触屏操作、混合应用、toast 获取。 swipe:swipe 也是通过touchAction来实现的。...可能面临 1%-10%的失败率。当然不同的产品是不一样的。 三、测试混合应用 原生控件关于 html 页面的元素标识是什么? Web 自动化中一个页面中嵌入了另外一个页面,用的是iframe。...webview 代表网页视图。 如果从原生控件中切换到网页视图当中,切换的名字叫做context,切换的前提是获取到它。 获取到 webview 对应的context,然后在这里面去操作。...原生控件+html 页面:混合应用-webview\切换 context\uc-devtools\web 自动化 四、以代码的方式执行 Pytest 命令 import pytest if __name...代码中的执行效果跟在 cmd 中执行的效果是一模一样的。 五、App 自动化分层设计 App 自动化和 Web 自动化一样,都是这样分层的: ?

    68330

    Appium 2.0速览

    APP行业正在以每年指数速度增长,到2020年应用程序下载量将达到710亿。随着应用程序和应用程序下载量的增长,对这些应用程序进行测试的需求也在增加。...当我们谈论移动应用程序测试时,我们不能错过最流行的移动应用程序自动化测试工具Appium。 开源自动化框架可以追溯到2011年,当时Dan Cuellar开始探索可行的测试自动化工具。...什么是Appium Appium是一个开放源代码测试自动化框架,用于自动化iOS或Android移动设备以及Windows桌面应用程序、混合移动Web应用程序。...此后,Appium一直在发展,并继续保持最受欢迎的移动应用程序测试自动化框架的称号。 以下是Appium 2.0在来年推出时将带来的一些功能亮点。... 总结 Appium 2.0摆脱了测试中捆绑问题的麻烦,将使测试人员的生活更加轻松。

    1.1K30
    领券