zoukankan      html  css  js  c++  java
  • PO设计模式实例

    文件结构

     页面定位元素:zentao.properties

     1 #login page
     2 username = //*[@id='account']
     3 password = //*[@name='password']
     4 loginbt = //*[@id='submit']
     5 
     6 #navigation
     7 productwindow=//*[contains(@data-id,'product')]
     8 creat=//*[contains(@data-id,'creat')]
     9 
    10 #product create page
    11 productname=//*[@id='name']
    12 productcode=//*[@id='code']
    13 productowner=//*[@id='PO']
    14 producttype=//*[@id='type']
    15 productdescription=/html/body
    16 savebutton=//*[@id='submit']
     1 package task;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 
     6 import org.openqa.selenium.JavascriptExecutor;
     7 import org.openqa.selenium.WebDriver;
     8 import org.openqa.selenium.WebElement;
     9 import org.openqa.selenium.support.ui.Select;
    10 
    11 import util.ElementLocation;
    12 import util.ReadProperties;
    13 
    14 public class CreatNewProduct {
    15     
    16     public static void creat_new_product(WebDriver dr,String prodname,String prodcode) throws FileNotFoundException, IOException{
    17         
    18         //跳转进入产品界面
    19         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productwindow")).click();
    20         //点击添加产品
    21         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "creat")).click();
    22         
    23         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productname")).sendKeys(prodname);
    24         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productcode")).sendKeys(prodcode);
    25         
    26         ((JavascriptExecutor)dr).executeScript("document.getElementById('PO').style.display='block'");
    27         WebElement po = ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productowner"));
    28         Select productowner = new Select(po);
    29         productowner.selectByValue("admin");
    30 
    31         //产品描述
    32         dr.switchTo().frame(0);
    33         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productdescription")).sendKeys("这是一个Java UI实战");
    34         dr.switchTo().defaultContent();
    35 
    36         //点击保存
    37         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "savebutton")).click();
    38                 
    

    流程操作

    1、新建产品

     1 package task;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 
     6 import org.apache.xmlbeans.SchemaLocalElement;
     7 import org.openqa.selenium.JavascriptExecutor;
     8 import org.openqa.selenium.WebDriver;
     9 import org.openqa.selenium.WebElement;
    10 import org.openqa.selenium.support.ui.Select;
    11 
    12 import util.ElementLocation;
    13 import util.ReadProperties;
    14 
    15 public class CreatNewProduct {
    16     
    17     public static void creat_new_product(WebDriver dr,String prodname,String prodcode) throws FileNotFoundException, IOException{
    18         
    19         //跳转进入产品界面
    20         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productwindow")).click();
    21         //点击添加产品
    22         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "creat")).click();
    23         
    24         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productname")).sendKeys(prodname);
    25         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productcode")).sendKeys(prodcode);
    26         
    27         ((JavascriptExecutor)dr).executeScript("document.getElementById('PO').style.display='block'");
    28         WebElement po = ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productowner"));
    29         Select productowner = new Select(po);
    30         productowner.selectByValue("admin");
    31         
    32         
    33         //产品描述
    34         
    35         dr.switchTo().frame(0);
    36         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productdescription")).sendKeys("这是一个Java UI实战");
    37         dr.switchTo().defaultContent();
    38         
    39         
    40         //点击保存
    41         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "savebutton")).click();
    42                 
    43     }
    44 }
     1 package task;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 
     6 import org.openqa.selenium.JavascriptExecutor;
     7 import org.openqa.selenium.WebDriver;
     8 import org.openqa.selenium.WebElement;
     9 import org.openqa.selenium.support.ui.Select;
    10 
    11 import util.ElementLocation;
    12 import util.ReadProperties;
    13 
    14 public class CreatNewProduct {
    15     
    16     public static void creat_new_product(WebDriver dr,String prodname,String prodcode) throws FileNotFoundException, IOException{
    17         
    18         //跳转进入产品界面
    19         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productwindow")).click();
    20         //点击添加产品
    21         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "creat")).click();
    22         
    23         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productname")).sendKeys(prodname);
    24         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productcode")).sendKeys(prodcode);
    25         
    26         ((JavascriptExecutor)dr).executeScript("document.getElementById('PO').style.display='block'");
    27         WebElement po = ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productowner"));
    28         Select productowner = new Select(po);
    29         productowner.selectByValue("admin");
    30 
    31         //产品描述
    32         dr.switchTo().frame(0);
    33         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "productdescription")).sendKeys("这是一个Java UI实战");
    34         dr.switchTo().defaultContent();
    35 
    36         //点击保存
    37         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "savebutton")).click();
    38                 
    39     }
    40 

    2、登录操作: LoginToZentao

     1 package task;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 
     6 import org.openqa.selenium.WebDriver;
     7 
     8 import util.ElementLocation;
     9 import util.ReadProperties;
    10 
    11 public class LoginToZentao {
    12     
    13     public static void login_to_zentao(WebDriver dr,String username,String password) throws FileNotFoundException, IOException{
    14         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "username")).clear();
    15         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "username")).sendKeys(username);
    16         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "password")).clear();
    17         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "password")).sendKeys(password);
    18         ElementLocation.locate(dr, "xpath", ReadProperties.getprop("zentao", "loginbt")).click();
    19     }
    20 }

    常用方法

    1、登录:BrowserSelector

     1 package util;
     2 
     3 import org.openqa.selenium.WebDriver;
     4 import org.openqa.selenium.firefox.FirefoxDriver;
     5 
     6 public class BrowserSelector {
     7     public static WebDriver browser(WebDriver dr,String browsername,String url) throws InterruptedException {
     8         if(browsername.equals("Firfox")){
     9             System.setProperty("webdriver.gecko.driver", "D://geckodriver.exe");
    10             System.setProperty("webdriver.firefox.bin","D://firefox.exe");
    11             dr = new FirefoxDriver();
    12         }
    13         dr.manage().window().maximize();
    14         dr.get(url);
    15         Thread.sleep(1000);
    16         return dr;
    17     }
    18 }

    2、元素定位:ElementLocation

     1 package util;
     2 
     3 import org.openqa.selenium.By;
     4 import org.openqa.selenium.WebDriver;
     5 import org.openqa.selenium.WebElement;
     6 import org.openqa.selenium.support.ui.ExpectedConditions;
     7 import org.openqa.selenium.support.ui.WebDriverWait;
     8 
     9 public class ElementLocation {
    10     
    11     public static WebElement locate(WebDriver dr,String locatetype,String locatepath) {
    12         
    13         WebElement el = null;
    14         WebDriverWait wait = new WebDriverWait(dr,5);
    15         
    16         if(locatetype.equals("id")){
    17             wait.until(ExpectedConditions.elementToBeClickable(By.id(locatepath)));
    18             el = dr.findElement(By.id(locatepath));
    19         }
    20         else if(locatetype.equals("xpath")){
    21             wait.until(ExpectedConditions.elementToBeClickable(By.xpath(locatepath)));
    22             el = dr.findElement(By.xpath(locatepath));
    23         }
    24         else if(locatetype.equals("name")){
    25             wait.until(ExpectedConditions.elementToBeClickable(By.name(locatepath)));
    26             el = dr.findElement(By.name(locatepath));
    27         }
    28         else if(locatetype.equals("classname")){
    29             wait.until(ExpectedConditions.elementToBeClickable(By.className(locatepath)));
    30             el = dr.findElement(By.className(locatepath));
    31         }
    32         return el;
    33         
    34     }
    35 }

    3、读取Excel:RangeDatabyPOI

     1 package util;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.IOException;
     6 import java.util.ArrayList;
     7 import java.util.List;
     8 
     9 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
    10 import org.apache.poi.ss.usermodel.Cell;
    11 import org.apache.poi.ss.usermodel.Row;
    12 import org.apache.poi.ss.usermodel.Sheet;
    13 import org.apache.poi.ss.usermodel.Workbook;
    14 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    15 
    16 public class RangeDatabyPOI {
    17     
    18     public static Object[][] poiRangeData(String filePath) throws IOException {
    19         
    20         File file = new File( filePath);
    21         //读取数据流
    22         FileInputStream inputStream = new FileInputStream(file);
    23         Workbook workbook = null;
    24         String extensionName = filePath.substring(filePath.indexOf("."));
    25         if(extensionName.equals(".xls")){
    26             workbook = new HSSFWorkbook(inputStream);
    27         }
    28         else if(extensionName.equals(".xlsx")){
    29             workbook = new XSSFWorkbook(inputStream);
    30         }
    31         else{
    32             System.out.println("文件格式不正确");
    33         }
    34         Sheet sheet = workbook.getSheetAt(0);
    35         int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
    36         List<Object[]> records = new ArrayList<Object[]>();
    37         
    38         for(int i=1;i<rowCount+1;i++){
    39             Row row = sheet.getRow(i);
    40             String fields[] = new String[row.getLastCellNum()];
    41             for(int j=0;j<row.getLastCellNum();j++){
    42                 row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);
    43                 fields[j] = row.getCell(j).getStringCellValue();
    44             }
    45             records.add(fields);
    46         }
    47         Object[][] results = new Object[records.size()][];
    48         for(int i=0;i<records.size();i++){
    49             results[i] = records.get(i);
    50         }
    51         return results;
    52         
    53     }
    54     public static void main(String[] args) throws IOException {
    55         Object[][] array = poiRangeData("E:\Java\eclipse\MavenTest\src\test\java\util\test1.xlsx");
    56         System.out.println(array);
    57     }
    58 }

    4、读取配置文件:ReadProperties

     1 package util;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.FileNotFoundException;
     5 import java.io.IOException;
     6 import java.util.Properties;
     7 
     8 public class ReadProperties {
     9     
    10     public static String getprop(String filename,String propname) throws FileNotFoundException, IOException{
    11         Properties props = new Properties();
    12         props.load(new FileInputStream("../target/test-classes/element/"+filename+".properties"));
    13         String str = props.getProperty(propname);
    14         return str;
    15     }
    16 }

    测试用例:testcase

     1 package testcase;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 import org.openqa.selenium.WebDriver;
     6 import org.testng.annotations.BeforeTest;
     7 import org.testng.annotations.DataProvider;
     8 import org.testng.annotations.Parameters;
     9 import org.testng.annotations.Test;
    10 import org.testng.log4testng.Logger;
    11 
    12 import task.CreatNewProduct;
    13 import task.LoginToZentao;
    14 import util.BrowserSelector;
    15 import util.RangeDatabyPOI;
    16 
    17 public class zt_CreateProduct {
    18     
    19     private static Logger log = Logger.getLogger(Test.class);
    20     
    21     WebDriver dr = null;
    22     String starturl;
    23     String browser;
    24     String name;
    25     String pass;
    26     @Parameters({"url","browser","usrname","usrpass"})
    27     @BeforeTest
    28     public void beforetestng(String url,String br,String usrname,String usrpass) throws InterruptedException {
    29         
    30         starturl = url;
    31         browser = br;
    32         name = usrname;
    33         pass = usrpass;
    34         
    35     }
    36 /*    
    37     @DataProvider(name="exceltest")
    38     public Object[][] excelread() throws IOException{
    39         Object[][] array = RangeDatabyPOI.poiRangeData("E:\Java\eclipse\MavenTest\src\test\java\util\test1.xlsx");
    40         return array;
    41     }
    42     @Test(dataProvider="exceltest")
    43     public void ctestng(String content1,String conten2) throws InterruptedException, FileNotFoundException, IOException{
    44         dr = BrowserSelector.browser(dr, browser, starturl);
    45         LoginToZentao.login_to_zentao(dr, name, pass);
    46     }
    47     */
    48     @Test
    49     public void ctestng() throws InterruptedException, FileNotFoundException, IOException{
    50         dr = BrowserSelector.browser(dr, browser, starturl);
    51         LoginToZentao.login_to_zentao(dr, name, pass);
    52         CreatNewProduct.creat_new_product(dr, "UItest002", "UItest00002");
    53     }
    54 }
  • 相关阅读:
    Unix命令大全
    vs2008 与 IE8出现的兼容性问题
    Java 创建文件、文件夹以及临时文件
    如何修改Wamp中mysql默认空密码
    PAT 乙级真题 1003.数素数
    Tags support in htmlText flash as3
    DelphiXE4 FireMonkey 试玩记录,开发IOS应用 还是移植
    10 Great iphone App Review sites to Promote your Apps!
    HTML tags in textfield
    Delphi XE4 IOS 开发, "No eligible applications were found“
  • 原文地址:https://www.cnblogs.com/zhufeng123/p/13789465.html
Copyright © 2011-2022 走看看