zoukankan      html  css  js  c++  java
  • Appium混合应用测试

    Appium测试混合应用

    混合应用即是原生应用中间混着html页面,需要在两种类型的页面之间跳转。

    测试Android混合应用

    前期设置

    1. 4.4以下版本使用automationName:Selendroid
    2. 4.4及其以上的版本使用automationName:Appium
    3. 需要设置webview的debug模式为true,默认是false

    元素定位

    Selendroid模式:selendroid inspector
    Appium模式:chrome://inspect

    代码示例

    设置webview的debug模式,需要插入在android源码当中:

    if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT){
        WebView.setWebContentsDebuggingEnabled(true);
    }
    

    Selendroid代码示例,appium模式替换automationName:Appium即可:

    //配置 webdriver 并启动 webview 应用。
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
    desiredCapabilities.setCapability("device", "Selendroid");
    desiredCapabilities.setCapability("app", "/path/to/some.apk");  
    URL url = new URL("http://127.0.0.1:4723/wd/hub");
    RemoteWebDriver remoteWebDriver = new RemoteWebDriver(url, desiredCapabilities);
    
    // 切换到最新的web视图
    remoteWebDriver.switchTo().window("WEBVIEW");
    
    //在 guinea-pig 页面用 id 和 元素交互。
    WebElement div = remoteWebDriver.findElement(By.id("i_am_an_id"));
    Assert.assertEquals("I am a div", div.getText()); //验证得到的文本是否正确。
    remoteWebDriver.findElement(By.id("comments")).sendKeys("My comment"); //填写评论。
    
    //离开 webview,回到原生应用。
    remoteWebDriver.switchTo().window("NATIVE_APP");
    
    //关闭应用。
    remoteWebDriver.quit();
    

    测试iOS混合应用

    前期设置

    1. 模拟器和本地应用相同
    2. 测试真机时需要ios_webkit_debug_proxy工具
    brew install ios_webkit_debug_proxy
    
    ios_webkit_debug_proxy -c [udid]:27753 -d
    

    元素定位

    使用Safari或者chrome的开发者工具

    代码示例

    //配置 webdriver 并启动 webview 应用。
    DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
    desiredCapabilities.setCapability("device", "iPhone Simulator");
    desiredCapabilities.setCapability("app", "http://appium.s3.amazonaws.com/WebViewApp6.0.app.zip");  
    URL url = new URL("http://127.0.0.1:4723/wd/hub");
    RemoteWebDriver remoteWebDriver = new RemoteWebDriver(url, desiredCapabilities);
    
    // 切换到最新的web视图
    for(String context : driver.getContextHandles()){
    	if (context.contains("WEBVIEW")) {
    		driver.context(context);
    	}
    }
    
    //在 guinea-pig 页面用 id 和 元素交互。
    WebElement div = remoteWebDriver.findElement(By.id("i_am_an_id"));
    Assert.assertEquals("I am a div", div.getText()); //验证得到的文本是否正确。
    remoteWebDriver.findElement(By.id("comments")).sendKeys("My comment"); //填写评论。
    
    //离开 webview,回到原生应用。
    remoteWebDriver.executeScript("mobile: leaveWebView");
    
    //关闭应用。
    remoteWebDriver.quit();
    

    参考官方文档

  • 相关阅读:
    linux运维 技能树
    ORACLE:毫秒与日期的相互转换,获取某天的信息
    Mybatis通用Mapper(转)
    Redis数据类型之散列类型hash
    Redis数据类型(字符串)
    Redis整理第三波(生存时间、事务管理)
    Redis整理第二波(启动、命令)
    非关系型数据库(NOSQL)-Redis
    冒泡排序,冒泡性能优化--java实现
    学习过的设计模式总结(分别从概念、分类、优缺点、应用、区别来说)
  • 原文地址:https://www.cnblogs.com/xiaomingtx/p/5619287.html
Copyright © 2011-2022 走看看