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,则判定成功。
        }
    
    
    
    
    }
  • 相关阅读:
    试图运行项目时出错,无法启动调试。没有正确安装调试器(转帖)
    IIS 401.2
    windows 2008 r2 64位运行crystal 2008的问题
    .net 命令行
    crystal report 2008 公式字段问题
    vs2003在IE8下无法调试的解决办法 (包括win2008 64位)
    Oninit里不能用ViewState
    web 开发的一些软件
    silverlight toolkit
    SqlConnection.Open的一些问题
  • 原文地址:https://www.cnblogs.com/superbaby11/p/6475157.html
Copyright © 2011-2022 走看看