测试用例

package com.appium.test;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.TimeUnit;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.remote.UnreachableBrowserException;


public class AutomTestStart {
    private boolean isInstall = false;
    public static RemoteWebDriver driver;
    public static String dateStringDir = "000000000000";
    
    public static void main(String args[]) throws Exception{
        SimpleDateFormat Timeformat= new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
            // 接下来我们生成时间戳; 括号内的参数  new Date 是java内部的源码类 不是我们封装的.
        dateStringDir = Timeformat.format(new Date());
        setUp();
        certification();
        logintest();
//        mainmojerFirst();
        recond();
    }
    public static void setUp() throws Exception {
        //启动appium
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("platformName","ios");
        capabilities.setCapability("platformVersion","12.1.4");
        capabilities.setCapability("udid","****");
        capabilities.setCapability("deviceName","iPhone 6");
        capabilities.setCapability("bundleId","net.humanbridge.mobile.***");
        capabilities.setCapability("xcodeSigningId","iPhone Developer");
        capabilities.setCapability("xcodeOrgId","***@qq.com");
        capabilities.setCapability("wdaLocalPort", "8101");
        driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
        // 超时设置
        driver.manage().timeouts().implicitlyWait(600,TimeUnit.SECONDS);
    }
    
    // 承诺页面测试
    public static void certification() throws IOException{
        System.out.println("准备开始记录上一次用例执行结果状态");
        Screenshot(driver, "cn", 5000);
        try{
            driver.findElementByXPath("//XCUIElementTypeButton[@name=\"承諾\"]").click();
            System.out.println("成功找到://XCUIElementTypeButton[@name=\"承諾\"],开始截屏!!");
            Screenshot(driver, "cn", 0);
        } catch(NoSuchElementException e){
            System.out.println("没找到//XCUIElementTypeButton[@name=\"承諾\"],可能锁屏啦!!");
        }
    }
    
    // 登录页面测试
    public static void logintest() throws IOException{
        System.out.println("准备开始记录上一次用例执行结果状态");
        Screenshot(driver, "lg", 5000);
        try{
            driver.findElementByXPath("//XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeTextField").sendKeys("DR001");
            System.out.println("成功找到://XCUIElementTypeButton[@name=\"承諾\"],开始截屏!!");
        } catch(NoSuchElementException e){
            System.out.println("没找到://XCUIElementTypeButton[@name=\"承諾\"],可能锁屏啦!!");
        }
        
        try{
            System.out.println("准备开始记录上一次用例执行结果状态");
            Screenshot(driver, "lg", 5000);
            driver.findElementByXPath("//XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeSecureTextField").sendKeys("zzr1100!");
            System.out.println("成功找到://XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeSecureTextField,开始截屏!!");
        } catch(NoSuchElementException e){
            System.out.println("没找到://XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeSecureTextField,可能锁屏啦!!");
        }
        
        try{
            System.out.println("准备开始记录上一次用例执行结果状态");
            Screenshot(driver, "lg", 5000);
            driver.findElementByXPath("//XCUIElementTypeButton[@name=\"ログイン\"]").click();
            System.out.println("成功找到://XCUIElementTypeButton[@name=\"ログイン\"],开始截屏!!");
        } catch(NoSuchElementException e){
            System.out.println("没找到://XCUIElementTypeButton[@name=\"ログイン\"],可能锁屏啦!!");
        }
        Screenshot(driver, "lg", 5000);
    }
    
    // 気になる患者から探す 和返回 测试
    public static void mainmojerFirst() throws IOException{
        System.out.println("准备开始记录上一次用例执行结果状态");
        Screenshot(driver, "mf", 5000);
        //  (//XCUIElementTypeLink[@name="気になる患者から探す"])[1]
        try{
            driver.findElementByXPath("(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1]").click();
            System.out.println("成功找到,并执行:(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1],开始截屏!!");
            Screenshot(driver, "mf", 5000);
        } catch(NoSuchElementException e){
            System.out.println("没找到:(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1],可能锁屏啦!!");
            unlockTest();
        }
        
        // 查找到患者并选中患者
        int count = 1;
        while(count < 10){
            try{
                driver.findElementByXPath("//XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeOther/XCUIElementTypeOther["+count+"]/XCUIElementTypeLink[2]").click();
                   System.out.println("成功找到,并执行://XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeOther/XCUIElementTypeOther["+count+"]/XCUIElementTypeLink[2],开始截屏!!");
                   Screenshot(driver, "mf", 5000);
                   System.out.println(count+"ok,患者找到了。");
                   break;
            } catch(NoSuchElementException e){
                // //XCUIElementTypeButton[@name="選択"]
                // 此节点不存在情况:锁屏,真不存在
                if(unlockTest()){
                    continue;
                } else {
                    // 真不存在情况
                    System.out.println(count+"继续查找中。。。。");
                    count ++ ;
                }
            }
        }
        
        // 判断记载按钮是否存在
        // (//XCUIElementTypeOther[@name="メイン"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]
        try{
            if(isElementExist("//XCUIElementTypeButton[@name=\"選択\"]")) {
                // 制限患者情况
                driver.findElementByXPath("//XCUIElementTypeButton[@name=\"選択\"]").click();
                   System.out.println("成功找到,并执行://XCUIElementTypeButton[@name=\"選択\"],开始截屏!!");
                   Screenshot(driver, "mf", 5000);
                   System.out.println(count+"ok,制限患者解除");
                   
            }
            WebElement ele = driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]");
            if(ele.isDisplayed()){
                System.out.println("测试成功!账号:DR001具有记载权限");
            } else {
                System.out.println("测试成功!账号:DR001不具有记载权限");
            }
        } catch(NoSuchElementException e){
            Screenshot(driver, "mf", 5000);
            System.out.println("没找到:(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1],可能锁屏啦!!");
            if(unlockTest()){
                if(isElementExist("//XCUIElementTypeButton[@name=\"選択\"]")) {
                    // 制限患者情况
                    driver.findElementByXPath("//XCUIElementTypeButton[@name=\"選択\"]").click();
                       System.out.println("成功找到,并执行://XCUIElementTypeButton[@name=\"選択\"],开始截屏!!");
                       Screenshot(driver, "mf", 5000);
                       System.out.println(count+"ok,制限患者解除");
                       
                }
                WebElement ele = driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]");
                if(ele.isDisplayed()){
                    System.out.println("测试成功!账号:DR001具有记载权限");
                } else {
                    System.out.println("测试成功!账号:DR001不具有记载权限");
                }            
            }
        }
    }

    
    public static void recond() throws IOException{
        System.out.println("准备开始记录上一次用例执行结果状态");
        Screenshot(driver, "mf", 5000);
        //  (//XCUIElementTypeLink[@name="気になる患者から探す"])[1]
        try{
            driver.findElementByXPath("(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1]").click();
            System.out.println("成功找到,并执行:(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1],开始截屏!!");
            Screenshot(driver, "mf", 5000);
        } catch(NoSuchElementException e){
            System.out.println("没找到:(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1],可能锁屏啦!!");
            unlockTest();
        }
        
        // 查找到患者并选中患者
        int count = 1;
        while(count < 10){
            try{
                driver.findElementByXPath("//XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeOther/XCUIElementTypeOther["+count+"]/XCUIElementTypeLink[2]").click();
                   System.out.println("成功找到,并执行://XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeOther/XCUIElementTypeOther["+count+"]/XCUIElementTypeLink[2],开始截屏!!");
                   Screenshot(driver, "mf", 5000);
                   System.out.println(count+"ok,患者找到了。");
                   break;
            } catch(NoSuchElementException e){
                // //XCUIElementTypeButton[@name="選択"]
                // 此节点不存在情况:锁屏,真不存在
                if(unlockTest()){
                    continue;
                } else {
                    // 真不存在情况
                    System.out.println(count+"继续查找中。。。。");
                    count ++ ;
                }
            }
        }
        
        // 判断记载按钮是否存在
        // (//XCUIElementTypeOther[@name="メイン"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]
        try{
            if(isElementExist("//XCUIElementTypeButton[@name=\"選択\"]")) {
                // 制限患者情况
                driver.findElementByXPath("//XCUIElementTypeButton[@name=\"選択\"]").click();
                   System.out.println("成功找到,并执行://XCUIElementTypeButton[@name=\"選択\"],开始截屏!!");
                   Screenshot(driver, "mf", 5000);
                   System.out.println(count+"ok,制限患者解除");
                   
            }
            WebElement ele = driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]");
            if(ele.isDisplayed()){
                System.out.println("测试成功!账号:DR001具有记载权限");
                ele.click();
                if(isElementExist("//XCUIElementTypeStaticText[@name=\"2019年02月27日\"]")) {
                    System.out.println("测试成功!记载日期显示正确!!!");
                }
            } else {
                System.out.println("测试成功!账号:DR001不具有记载权限");
            }
        } catch(NoSuchElementException e){
            Screenshot(driver, "mf", 5000);
            System.out.println("没找到:(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1],可能锁屏啦!!");
            if(unlockTest()){
                if(isElementExist("//XCUIElementTypeButton[@name=\"選択\"]")) {
                    // 制限患者情况
                    driver.findElementByXPath("//XCUIElementTypeButton[@name=\"選択\"]").click();
                       System.out.println("成功找到,并执行://XCUIElementTypeButton[@name=\"選択\"],开始截屏!!");
                       Screenshot(driver, "mf", 5000);
                       System.out.println(count+"ok,制限患者解除");
                       
                }
                WebElement ele = driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]");
                if(ele.isDisplayed()){
                    System.out.println("测试成功!账号:DR001具有记载权限");
                } else {
                    System.out.println("测试成功!账号:DR001不具有记载权限");
                }            
            }
        }

        
    }
    
    public static void recond3() throws IOException{
        System.out.println("准备开始记录上一次用例执行结果状态");
        Screenshot(driver, "mf", 5000);
        //  (//XCUIElementTypeLink[@name="気になる患者から探す"])[1]
        try{
            driver.findElementByXPath("(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1]").click();
            System.out.println("成功找到,并执行:(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1],开始截屏!!");
            Screenshot(driver, "mf", 5000);
        } catch(NoSuchElementException e){
            System.out.println("没找到:(//XCUIElementTypeLink[@name=\"気になる患者から探す\"])[1],可能锁屏啦!!");
            unlockTest();
        }
        
        // 查找到患者并选中患者
        int count = 1;
        while(count < 10){
            try{
                driver.findElementByXPath("//XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeOther/XCUIElementTypeOther["+count+"]/XCUIElementTypeLink[2]").click();
                   System.out.println("成功找到,并执行://XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeOther/XCUIElementTypeOther["+count+"]/XCUIElementTypeLink[2],开始截屏!!");
                   Screenshot(driver, "mf", 5000);
                   System.out.println(count+"ok,患者找到了。");
                   break;
            } catch(NoSuchElementException e){
                // //XCUIElementTypeButton[@name="選択"]
                // 此节点不存在情况:锁屏,真不存在
                if(unlockTest()){
                    continue;
                } else {
                    // 真不存在情况
                    System.out.println(count+"继续查找中。。。。");
                    count ++ ;
                }
            }
        }
        
        // 判断记载按钮是否存在
        // (//XCUIElementTypeOther[@name="メイン"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]
        try{
            if(isElementExist("//XCUIElementTypeButton[@name=\"選択\"]")) {
                // 制限患者情况
                driver.findElementByXPath("//XCUIElementTypeButton[@name=\"選択\"]").click();
                   System.out.println("成功找到,并执行://XCUIElementTypeButton[@name=\"選択\"],开始截屏!!");
                   Screenshot(driver, "mf", 5000);
                   System.out.println(count+"ok,制限患者解除");
                   
            }
            WebElement ele = driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]");
            if(ele.isDisplayed()){
                System.out.println("测试成功!账号:DR001具有记载权限");
                ele.click();
                if(isElementExist("//XCUIElementTypeStaticText[@name=\"2019年02月27日\"]")) {
                    System.out.println("测试成功!记载日期显示正确!!!");
                }
            } else {
                System.out.println("测试成功!账号:DR001不具有记载权限");
            }
        } catch(NoSuchElementException e){
            Screenshot(driver, "mf", 5000);
            System.out.println("没找到:(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1],可能锁屏啦!!");
            if(unlockTest()){
                if(isElementExist("//XCUIElementTypeButton[@name=\"選択\"]")) {
                    // 制限患者情况
                    driver.findElementByXPath("//XCUIElementTypeButton[@name=\"選択\"]").click();
                       System.out.println("成功找到,并执行://XCUIElementTypeButton[@name=\"選択\"],开始截屏!!");
                       Screenshot(driver, "mf", 5000);
                       System.out.println(count+"ok,制限患者解除");
                }
                WebElement ele = driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"メイン\"])[2]/XCUIElementTypeOther/XCUIElementTypeLink[1]");
                if(ele.isDisplayed()){
                    System.out.println("测试成功!账号:DR001具有记载权限");
                } else {
                    System.out.println("测试成功!账号:DR001不具有记载权限");
                }            
            }
        }

        
    }
    
    // 返回用例
    public static void back() throws IOException{
        try{
            System.out.println("准备开始记录上一次用例执行结果状态");
            Screenshot(driver, "mf", 5000);
//            driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1]").click();
            WebElement ele = driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1]");
            System.out.println("成功找到://XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1]");
            ele.click();
            System.out.println("成功执行:(//XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1],开始截屏!!");
            System.out.println("开始截屏!!");
            Screenshot(driver, "mf", 5000);
        } catch(NoSuchElementException e){
            System.out.println("没找到:(//XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1],可能锁屏啦!!");
            unlockTest();
            try{
                System.out.println("准备开始记录上一次用例执行结果状态");
                Screenshot(driver, "mf", 5000);
                driver.findElementByXPath("(//XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1]").click();
                System.out.println("成功找到,并执行:(//XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1],开始截屏!!");
                Screenshot(driver, "mf", 5000);
            } catch(NoSuchElementException e1){
                System.out.println("没找到:(//XCUIElementTypeOther[@name=\"バナー\"])[2]/XCUIElementTypeOther[1],可能锁屏啦!!");
                unlockTest();
            }
        }
    }
    
    // 自动解锁用例
    public static boolean unlockTest() throws IOException{
//        try {
//            Thread.sleep(5000);//记得要等待
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }
//        try{
//            System.out.println("准备开始记录上一次用例执行结果状态");
//            Screenshot(driver, "ul", 5000);
//            System.out.println("开始尝试解锁检查!!!!");
//            // (//XCUIElementTypeStaticText[@name="テスト IT2069"])[1]
//            String xpath_new = "//XCUIElementTypeOther[@name=\"メイン\"]/XCUIElementTypeOther/XCUIElementTypeOther[10]/XCUIElementTypeLink[3]/XCUIElementTypeLink";
//            String xpath_old = "(//XCUIElementTypeStaticText[@name=\"テスト IT2069\"])[1]";
//            driver.findElementByXPath(xpath_old).click();
//            System.out.println("解锁中!!!!");
//            driver.findElementByXPath(xpath_old).click();
//            System.out.println("解锁中!!!!");
//            driver.findElementByXPath(xpath_old).click();
//            System.out.println("解锁中!!!!");
//            driver.findElementByXPath(xpath_old).click();
//            System.out.println("解锁成功,并执行:(//XCUIElementTypeStaticText[@name=\"テスト IT2069\"])[1],开始截屏!!");
//            Screenshot(driver, "ul", 5000);
//            return true;
//        } catch(NoSuchElementException e){
//            System.out.println("没找到:(//XCUIElementTypeStaticText[@name=\"テスト IT2069\"])[1],没有锁屏!!");
//            return false;
//        } catch(UnreachableBrowserException e1){
//            System.out.println("Error communicating with the remote browser. It may have died.");
//            return false;
//        }
        return false;
    }

    // 截屏工具
    public static void Screenshot(RemoteWebDriver driver,String Picturename, int sleeptime) throws IOException {
        try {
            Thread.sleep(sleeptime);//记得要等待
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        // 上面就是类的外部.接下来我们首先需要设置一个时间的格式:     Timeformat  就是时间格式的对象.
        SimpleDateFormat Timeformat= new SimpleDateFormat("yyy-MM-dd-HH-mm-ss");
         //    接下来我们生成时间戳; 括号内的参数  new Date 是java内部的源码类 不是我们封装的.
        String dateString = Timeformat.format(new Date());
        //生成图片的目录
        String dir_name = System.getProperty("user.dir")+"/image/" + dateStringDir + "/" + Picturename + "/";
        System.out.println(dir_name);
        // 由于可能会存在图片的目录被删除的可能,,所以我们先判断目录是否存在,  如果不在的话:
        if( !(new File(dir_name).isDirectory())){
            // 不存在的话就进行创建目录.
            new File(dir_name ).mkdir();
        }
        // 调用方法捕捉画面;
        File screen = driver.getScreenshotAs(OutputType.FILE);
        // 复制文件到本地目录, 图片的最后存放地址为
        System.out.println(dir_name+"/"+dateString +Picturename+".jpg");
        FileUtils.copyFile(screen, new File(dir_name+"/"+dateString +Picturename+".jpg"));
    }
    
    // 判断页面是否含有某个元素
    public static boolean isElementExist(String xpath ){
        try{
            driver.findElement(By.xpath(xpath));
            return  true;
        }catch(org.openqa.selenium.NoSuchElementException ex){
            return false;
        }
    }
 
    // 停止测试
    public static void tearDown() throws Exception {
        driver.quit();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值