zoukankan      html  css  js  c++  java
  • 移动应用测试——简豆测试

    移动应用的测试的第一题,是简豆软件的测试。自己写了一下,由于不知道标准答案,但是实现了所有的需求。下面是主要的代码。

    package com.mooctest;
    
    import io.appium.java_client.AppiumDriver;
    import io.appium.java_client.AndroidKeyCode;
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.List;
    import java.util.concurrent.TimeUnit;
    
    import org.openqa.selenium.By;
    import org.openqa.selenium.NoSuchElementException;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.remote.CapabilityType;
    import org.openqa.selenium.remote.DesiredCapabilities;
    import org.openqa.selenium.remote.UnreachableBrowserException;
    
    
    public class Main {
        
        
        /**
         * 所有和AppiumDriver相关的操作都必须写在该函数中
         * @param driver
         */
        public void test(AppiumDriver driver) {
                    try {
                Thread.sleep(6000);        //等待6s,待应用完全启动
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS); //设置尝试定位控件的最长时间为8s,也就是最多尝试8s
          /*
             * 余下的测试逻辑请按照题目要求进行编写
             */
            
            try {
                //三条杠
                driver.findElementByClassName("android.widget.ImageButton").click();
                Thread.sleep(1000);
                //电影页面
                driver.findElementByXPath("//android.widget.CheckedTextView[@text='电影']").click();
                Thread.sleep(1000);
                //电影页面的爱情页面
                driver.findElementByXPath("//android.widget.TextView[@text='爱情']").click();
                Thread.sleep(1000);
                //爱情页面的泰坦尼克号
                driver.findElementByXPath("//android.widget.TextView[@text='泰坦尼克号']").click();
                Thread.sleep(1000);
                //泰坦尼克号的返回
                driver.findElementByClassName("android.widget.ImageButton").click();
                Thread.sleep(1000);
                //电影页面的喜剧页面
                driver.findElementByXPath("//android.widget.TextView[@text='喜剧']").click();
                Thread.sleep(1000);        
                 //电影页面的动画页面
                driver.findElementByXPath("//android.widget.TextView[@text='动画']").click();
                Thread.sleep(1000);
                 //电影页面的动画科幻页面
                driver.findElementByXPath("//android.widget.TextView[@text='科幻']").click();
                Thread.sleep(1000);            
                 //电影页面的动作页面
                driver.findElementByXPath("//android.widget.TextView[@text='动作']").click();
                Thread.sleep(1000);           
              //三条杠
                driver.findElementByClassName("android.widget.ImageButton").click();
                Thread.sleep(1000);
                //图书
                driver.findElementByClassName("android.widget.LinearLayout").click();
                Thread.sleep(1000);        
                //三条杠
                driver.findElementByClassName("android.widget.ImageButton").click();
                Thread.sleep(1000);
                //电影榜单
                driver.findElementByXPath("//android.widget.CheckedTextView[@text='电影榜单']").click();
                Thread.sleep(1000);
                //电影榜单的正在热映
                driver.findElementByXPath("//android.widget.TextView[@text='正在热映']").click();
                Thread.sleep(1000);
              //电影榜单的即将上映
                driver.findElementByXPath("//android.widget.TextView[@text='即将上映']").click();
                Thread.sleep(1000);
                //电影榜单的TOP250
                driver.findElementByXPath("//android.widget.TextView[@text='TOP250']").click();
                Thread.sleep(1000);
                //三条杠
                driver.findElementByClassName("android.widget.ImageButton").click();
                Thread.sleep(1000);
                //我的收藏
                driver.findElementByXPath("//android.widget.CheckedTextView[@text='我的收藏']").click();
                Thread.sleep(1000);
                //我的收藏的电影页面
                driver.findElementByXPath("//android.widget.TextView[@text='电影']").click();
                Thread.sleep(1000);
                //我的收藏的图书页面
                driver.findElementByXPath("//android.widget.TextView[@text='图书']").click();
                Thread.sleep(1000);
                //我的收藏的影人页面
                driver.findElementByXPath("//android.widget.TextView[@text='影人']").click();
                Thread.sleep(1000);
                //三条杠
                driver.findElementByClassName("android.widget.ImageButton").click();
                Thread.sleep(1000);
                //更改标签
                driver.findElementByXPath("//android.widget.CheckedTextView[@text='更改标签']").click();
                Thread.sleep(1000);
                //三条杠
                driver.findElementByClassName("android.widget.ImageButton").click();
                Thread.sleep(500);
                //设置
                driver.findElementByXPath("//android.widget.CheckedTextView[@text='设置']").click();
                Thread.sleep(1000);
           
                
            } catch (Exception e) {
            }
    
        }
        
        /**
         * AppiumDriver的初始化逻辑必须写在该函数中
         * @return
         */
        public AppiumDriver initAppiumTest() {
            
            AppiumDriver driver=null;
            File classpathRoot = new File(System.getProperty("user.dir"));
            File appDir = new File(classpathRoot, "apk");
            File app = new File(appDir, "Jiandou.apk");
            
            //设置自动化相关参数
            DesiredCapabilities capabilities = new DesiredCapabilities();
            capabilities.setCapability("browserName", "");
            capabilities.setCapability("platformName", "Android");
            capabilities.setCapability("deviceName", "Android Emulator");
            capabilities.setCapability("appPackage", "com.lhr.jiandou");
            capabilities.setCapability("appActivity", ".activity.MainActivity");
            capabilities.setCapability("noSign", "true");
    
            //设置apk路径
            capabilities.setCapability("app", app.getAbsolutePath()); 
            
            //设置使用unicode键盘,支持输入中文和特殊字符
            capabilities.setCapability("unicodeKeyboard","true");
            //设置用例执行完成后重置键盘
            capabilities.setCapability("resetKeyboard","true");
            //初始化
            try {
                driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }   
            return driver;
        }
        
        public void start() {
            test(initAppiumTest());
        }
        
        public static void main(String[] args) {
            Main main = new Main();
            main.start();
        }
        
    
    }
  • 相关阅读:
    一个表缺失索引发的CPU资源瓶颈案例
    SQLServer 版本之八大方法搞清 "我是谁"
    DBA成长路线
    SQL Server2016升级前几点自检
    SQL Server 2016白皮书
    <译>通过PowerShell工具跨多台服务器执行SQL脚本
    /lib64/libc.so.6: version `GLIBC_2.17' not found
    /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
    HGT高程数据文件格式解析
    DEM高程数据下载资源
  • 原文地址:https://www.cnblogs.com/tianqianlan/p/10446918.html
Copyright © 2011-2022 走看看