zoukankan      html  css  js  c++  java
  • appium 移动web样例脚本

    简单介绍

    这是一个使用appium操作移动端chrome浏览器的样例程序。

    样例程序

    脚本实现的功能是:打开浏览器-->跳转到百度首页-->输入appium-->点击搜索按钮-->如果第一条搜索结果的标题含有appium字符串,那么断言脚本运行成功。

    需要注意的是,操作chrome浏览器的方式是:指明chrome安装包的位置及相应的package和activity。

    package com.wwh.utils;
    
    import io.appium.java_client.MobileElement;
    import io.appium.java_client.android.AndroidDriver;
    import io.appium.java_client.remote.AndroidMobileCapabilityType;
    import io.appium.java_client.remote.AutomationName;
    import io.appium.java_client.remote.MobileCapabilityType;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.testng.Assert;
    import org.testng.annotations.*;
    
    import java.io.File;
    import java.net.URL;
    import java.util.concurrent.TimeUnit;
    
    /**
     * Created by wwh on 17/2/24.
     */
    public class H5Test {
        private AndroidDriver<MobileElement> driver;
    
        @BeforeTest
        public void Demo() throws Exception {
    // set up appium
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.APPIUM);
    //for native app set null, for web test please set chrome or firefox
            //capabilities.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME);
            capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
            capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator");
    //simulator version 4.4
            capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");
    // if no need install don't add this
            File classpathRoot = new File("/Users/wwh/IdeaProjects");
            File appDir = new File(classpathRoot, "apps");
            File app = new File(appDir, "com.android.chrome.1702051940.apk");
    //        capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
    
    //package name
    //        capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.chrome.dev");
            capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.android.chrome");
    // // support Chinese
            capabilities.setCapability("unicodeKeyboard", "True");
            capabilities.setCapability("resetKeyboard", "True");
    // no need sign
    //        capabilities.setCapability("noSign", "True");
    //launcher activity
            capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY,
                    "org.chromium.chrome.browser.webapps.WebappLauncherActivity");
            String url = "http://localhost:4723/wd/hub";
            driver = new AndroidDriver<MobileElement>(new URL(url), capabilities);
    
    
        }
    
        @AfterTest
        public void Teardown(){
            driver.quit();
        }
    
        @Test
        public void runChromebrowser(){
            driver.get("http://www.baidu.com");//打开百度首页
            driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
            driver.findElement(By.xpath("//android.widget.LinearLayout[1]/" +
                    "android.widget.FrameLayout[1]/android.widget.FrameLayout[1]" +
                    "/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]" +
                    "/android.view.View[1]/android.widget.FrameLayout[1]/android.widget" +
                    ".FrameLayout[1]/android.webkit.WebView[1]/android.view.View[1]/" +
                    "android.view.View[5]/android.widget.EditText[1]")).sendKeys("appium");//输入appium
            driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]" +
                    "/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]" +
                    "/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/" +
                    "android.webkit.WebView[1]/android.view.View[1]/android.view.View[5]/android.view.View[1]" +
                    "/android.widget.Button[1]")).click();//点击搜索按钮
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }//因为页面加载完成前,下面的el的xpath会指向另一个页面元素,所以加了2秒等待。
            WebElement el = driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.webkit.WebView[1]/android.view.View[1]/android.view.View[3]/android.view.View[2]"));
    
            String desc = el.getAttribute("contentDescription");
            System.out.println("desc: "+desc);
            Assert.assertTrue(desc.contains("appium"));//若搜索结果包含appium,则判定成功。
        }
    
    
    
    
    }
  • 相关阅读:
    python 实例方法、静态方法、类方法的区别
    locust 参数化实现
    Airtest 基于图像识别的自动化测试工具
    python 调用 dubbo 接口
    locust+geventhttpclient 性能优化
    python性能测试工具locust
    性能测试工具 wrk
    jmeter 参数化,关联参数,断言等使用说明
    Django上传excel表格并将数据写入数据库
    小程序 wx.uploadFile 上传文件 iOS 失败 400 错误排查
  • 原文地址:https://www.cnblogs.com/superbaby11/p/6475157.html
Copyright © 2011-2022 走看看