精华内容
下载资源
问答
  • webView 测试问题,无法检测 webView 控件
    2021-06-03 12:01:29

    配置:android 5.0 模拟器 +AppiumForWindows-1.3.4.1

    这是测试源代码:

    ```java

    import org.junit.After;

    import org.junit.Before;

    import org.junit.Test;

    import org.openqa.selenium.*;

    import org.openqa.selenium.remote.CapabilityType;

    import org.openqa.selenium.remote.DesiredCapabilities;

    import android.webkit.WebView;

    import io.appium.java_client.AppiumDriver;

    import java.io.File;

    import java.net.URL;

    import java.util.Set;

    public class AndroidWebViewTest {

    private AppiumDriver driver;

    @Before

    public void setUp() throws Exception {

    File classpathRoot = new File(System.getProperty("user.dir"));

    File appDir = new File(classpathRoot, "apps");

    File app = new File(appDir, "WebView.apk");

    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability(CapabilityType.BROWSER_NAME, "");

    capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS");

    capabilities.setCapability("app", app.getAbsolutePath());

    capabilities.setCapability("appPackage", "com.example.webview");

    capabilities.setCapability("appActivity", ".MainActivity");

    capabilities.setCapability("platformName", "Android");

    // capabilities.setCapability("deviceName","HUAWEI G700-U00");

    capabilities.setCapability("deviceName","myAVD");

    capabilities.setCapability("platformVersion", "21");

    driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

    }

    @Test

    public void main(){

    Set contextNames = driver.getContextHandles();

    System.out.println(contextNames.size());

    for (String contextName : contextNames) {

    System.out.println(contextName);

    if(contextName.contains("WEBVIEW")||contextName.contains("webview")){

    driver.context(contextName);

    }else{

    System.out.println("no WEBVIEW");

    }

    }

    // Thread.sleep(15000);

    // driver.context("WEBVIEW");

    // System.out.print("CurrentUrl"+driver.getCurrentUrl());

    }

    @After

    public void tearDown() throws Exception {

    driver.quit();

    }

    }

    2. 这是打印的结果

    ```java

    1

    NATIVE_APP

    no WEBVIEW

    这是控制台打屏

    f2378efbb76b0ce02e39a643d12c02f3.png

    更多相关内容
  • APPIUM 进行微信小程序时遇到的获取不到context问题

    千次阅读 热门讨论 2021-02-04 11:05:49
    但是在代码里或者context时只有一个【‘NATIVE_APP’】,获取不到 WEBVIEW_com.tencent.mm:appbrand0context 查了好多资料,发现是由于腾讯系QQ、微信是基于腾讯自研X5内核-类似webview,不是谷歌原生webview;...

    这两天在尝试用appium对微信小程序做自动化测试,启动微信,打开小程序后,在命令提示符里,可以看到有两个activity

    但是在代码里或者context时只有一个【‘NATIVE_APP’】,获取不到 WEBVIEW_com.tencent.mm:appbrand0 context

     

    查了好多资料,发现是由于腾讯系QQ、微信是基于腾讯自研X5内核-类似webview,不是谷歌原生webview;我们需要打开微信小程序webview调试开关

    在微信聊天窗口中发送如下URL:

    http://debugmm.qq.com/?forcex5=true

    http://debugx5.qq.com

    打开并打开调试;在chrome浏览器中,输入chrome://inspect/#devices 能够看到小程序页面,则成功

    如果inspect页面显示 HTTP/1.1 404 Not Found, 则需要确认电脑上chrome浏览器的版本是不是跟微信chrome版本一致

    在微信聊天窗口中发送如下URL: http://httpbin.org/user-agent

    打开可以看到chrome的版本号

    再次用appium运行微信,打开小程序后,再次获取contexts, 就可以获取到小程序的context了。

    ['NATIVE_APP', 'WEBVIEW_com.tencent.mm:appbrand2', 'WEBVIEW_com.tencent.mm:appbrand0']

    展开全文
  • 我使用appium 测试我公司的混合app,使用driver.context("WebView")切换到webview后,调用getPageSource(),返回如下 ``` <html xmlns="http://www.w3.org/1999/xhtml"><head></head><body>...
  • appium获取webview内容的解决办法

    千次阅读 2017-04-24 00:03:00
    在用appium对小猿搜题app进行自动化测试时,准备用...查询之后,得知需要通过contexts获取所有的context,然后通过switch_to.context()切换对应的context下便可获取 通过打印context,结果如下 显示只有一个NATI...

    在用appium对小猿搜题app进行自动化测试时,准备用page_source打印出文章的xml内容

    但是发现只能打印出外部结构内容,实际的文章内容却没有显示

    截图如下

     

    查询之后,得知需要通过contexts获取所有的context,然后通过switch_to.context()切换到对应的context下便可获取

    通过打印context,结果如下

    显示只有一个NATIVE_APP,并没有其他的webview信息

    又经过一番查询,得知只有在android4.4及以上版本的系统中才会输出更多的webview

    因此时用的安卓模拟器为夜神,系统为android4.4.2,猜测系统应该没问题

    但是抱着试一下的态度,下载并安装了逍遥安卓模拟器(android版本为4.4.4)

    测试结果如下

    意外的输出了另外两个context

    猜测应该是不同的模拟器对安卓系统有不同程度的修改

    接着通过switch_to.context()依次切换这三个context,得到了需要的正文内容

     通过此次经历,继续学习了appium的相关自动化测试,对移动端的自动化测试也有了更深一层的认识。

     

    转载于:https://www.cnblogs.com/niansi/p/6754766.html

    展开全文
  • 现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位webview上的元素就无法识别了。一、识别webview1.用定位工具查看页面,发现页面上有些区域无法定位,如下图左边...

    现在大部分app都是混合式的native+webview,对应native上的元素通过uiautomatorviewer很容易定位到,webview上的元素就无法识别了。

    一、识别webview

    1.用定位工具查看页面,发现页面上有些区域无法定位到,如下图左边红色区域,只能定位到这个大框框,红色框里面的元素是无法识别的。

    2.这时候可以查看元素属性,如右图它的class属性,上面写着WebView,那毫无疑问这种页面就是webview了。

    二、contexts

    1.context是中文翻译是上下文,环境,当然学过selenium的同学,也可以理解为句柄(handle),其实是一回事,反正知道是两个不同的环境就行了。

    2.先获取页面是contexts环境,如下图红色区域,获取的是一个list列表:

    NATIVE_APP:这个就是native,也就是原生的

    WEBVIEW_com.xxxx :这个就是webview

    3.当看到打印出来有下图两个,就说明获取到webview的context了(当然也有的app有坑,可能明明有webview,却通过contexts获取不到,这种需要特殊处理了)

    三、切换到webview

    1.要想操作webview上的元素,第一步需要切换环境(跟selenium的切换iframe,切换handle思路是一样)

    2.切换方法:switch_to.context(参数是webview的context)

    由于第二步已经获取到contexts是一个list对象,取这个list的第二个参数就行,也就是contexts[1]

    四、切回native

    1.webview上操作完后,想回到native上操作,这时候需要先切回来,切回native有两个方法:

    方法一:driver.switch_to.context("NATIVE_APP")   # 这个NATIVE_APP是固定的参数

    方法二:driver.switch_to.context(contexts[0])      # 从contexts里取第一个参数

    五、参考代码

    # coding:utf-8

    from appium import webdriver

    import time

    desired_caps = {'platformName': 'Android',

    'deviceName': '30d4e606',

    'platformVersion': '6.0',

    'appPackage': 'com.baidu.yuedu',

    'appActivity': 'com.baidu.yuedu.splash.SplashActivity'}

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

    time.sleep(30)

    # 点图书按钮

    driver.find_element_by_id("com.baidu.yuedu:id/righttitle").click()

    time.sleep(3)

    # 切换到图书界面后获取所有的环境

    contexts = driver.contexts

    print contexts

    # 切换到webview

    driver.switch_to.context(contexts[1])

    # 获取当前的环境,看是否切换成功

    now = driver.current_context

    print now

    # 切回native

    driver.switch_to.context(contexts[0])

    # driver.switch_to.context("NATIVE_APP") # 这样也是可以的

    # 获取当前的环境,看是否切换成功

    now = driver.current_context

    print now

    展开全文
  • app自动化测试之Appium WebView 技术原理
  • 基本信息环境:Android(hybird)+robotframework+appium+w8版本:appium-1.4.0.0实现功能对 Android 内的 WEBVIEW 部分实现输入等操作,如图...context 只有 NATIVE_APP无法切换 WEBVIEW 模式下,请教哪位知...
  • 基本信息环境:Android(hybird)+robotframework+appium+w8版本:appium-1.4.0.0实现功能对 Android 内的 WEBVIEW 部分实现输入等操作,如图...context 只有 NATIVE_APP无法切换 WEBVIEW 模式下,请教哪位知...
  • 前言:15 号左右,开发和我说搞了一个高逼格的东西,亲儿子换成 QQx5 的内核了,然后我这边发现____以前可以直接定位的,现在更换 x5 内核之后 H5 页面的元素竟然 switch_to.context 切换了!环境:语言 :python...
  • app自动化测试之Andriod WebView如何测试
  • Hybrid App(混合模式移动应用)是介于 Web-app、Native-app 之间的 app,本质上是 Native-app 中嵌入 WebView 组件,在 WebView 组件里可以访问 Web App。Hybrid App 在给用户良好交互体验的同时,还具备了 Web App...
  • 在使用appnium 测试app的内嵌H5页面时,发现定位不到里面的元素,它是被一个大的webview所包裹,需要先切换进webview中 ,然后就像测试web端一样定位元素,才能测试,但在使用contexts方法获取上下文时,发现只能...
  • 不是很难,但总是会那么几个,看看吃亏。
  • 如何玩转app+webview混合应用自动化

    千次阅读 2018-10-18 10:30:35
    WebView简介 移动平台的一个特性是能够将“ 无 格式 ” Web浏览器嵌入“ 原生 ”应用程序中,这些应用程序称为“ webviews ”。Android开发人员使用“ android.webkit.WebView ”类在应用程序内部实现...
  • 一、APP启动性能分析 APP的启动过程 调用起APP、创建一个空白窗口、启动一个进程 ——> Application OnCreate 开始调用起App ——> Activity OnCreate 创建主线程MainThread(页面的渲染,数据的初始化) 启动...
  • WebView技术原理

    2021-10-10 11:15:30
    我们可以通过 uiautomatorviewer将webview解析出来android能识别的组件,但是这种方式在不同的手机上有可能解析的一致,导致自动化脚本稳定,推荐使用这种方法。另外我们可以手机端的webview页面映射PC端,...
  • Appium 混合应用切换webview

    千次阅读 2019-06-30 11:51:50
    切换webview步骤 以下是在Appium测试中与 webview 对话所需的步骤: 导航应用程序中web页面 获取上下文列表,它返回一个我们可以访问的上下文列表,例如: NATIVE_APPWEBVIEW_1 切换你要操作的...
  • android webview测试

    2021-05-20 20:22:36
    被测浏览器:(可以是第三方浏览器)safari for ios and chrome,chromium,or browser for Android PC端 安装chrome浏览器或者chromium,并且能登录 https://www.google.com/ 下载对应手机浏览器对应的driver ...
  • 2018.12.28 博主苟延残喘中,可能会上演从入门放弃
  • 切换到webview

    2019-05-22 17:26:58
    1.获取handle,方式如下 Set contexts = driver.getContextHandles(); for (Object context : contexts) { System.out.println((String) context); } 控制台会输出以下信息,一般webview命名方式都...
  • Android webview测试原理

    2021-10-12 17:17:37
    webView测试 模拟器上的测试 webview控件会被映射为原生控件,类型为View,其中的文本内容会变成content-desc或者text 6.0会把webview中的控件变成一个带...如果还是访问不到,检查webview的调试属性是否开启,此时需
  • 最近受人委托,想搞个自动化脚本,基于微信公众号的!听到这个请求的时候第一反应是这简单呀,用Appium就可以实现呀!于是很随意的就答应了!事实确实如此吗?先来说下过程吧一、环境:Python35-32...
  • 前言 本篇介绍如何在微信...环境准备:python 3.6appium 1.7以上版本微信6.6.6微信里面webview 57.0电脑上chrome版本 66.0appium-chromedriver路径下chromedriver 2.28 开启微信debug模式 1.以微信为例,webv...
  • 前言本篇介绍如何在微信公众号上自动化测试,以操作我的个人公众号:yoyoketang为例,没关注的,先微信关注了,再跟着操作环境准备:python 3.6appium 1.7以上版本微信6.6.6微信里面webview 57.0电脑上chrome版本 ...
  • 在手机APP中,除了原生页面,还是有webview页面(就是H5页面),下面我们就说说对webview页面的操作。 1、先了解什么是Hybrid(混合)? 移动混合应用程序的App,即在移动应用程序中嵌入了Webview通过Webview...
  • 一、手机应用简介 目前主流应用程序大体分为三类:web APP(网页应用)、hybrid APP(混合应用)、native APP(原生...#其中NATIVE_APP为原生的,WEBVIEW开头的表示H5的 #再使用如下方法切换H5即可 self.driver.swi
  • 记录appium切换webView

    2021-04-28 16:16:10
    记录appium切换webView问题解决办法1 问题 前几天在做app自动化时send.keys无法输入文字,一开始以为是定位问题,更换了数种定位, 在appium中尝试不行,向经理请教了一番后,才知道原来需要切换窗口,类似于web的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 506
精华内容 202
关键字:

当然也有的app有坑,可能明明有webview,却通过contexts获取不到

友情链接: md5.tar.gz