From b2af39f84bc3218b7b0e112425ee0bf0af102738 Mon Sep 17 00:00:00 2001 From: zengjin Date: Tue, 30 Oct 2018 14:56:09 +0800 Subject: [PATCH] 新增开发商品 --- src/main/java/com/essa/framework/BasePage.java | 20 ++++++++++++++------ src/main/java/com/essa/framework/Model.java | 23 ++++++++++++++++++++--- src/main/java/com/essa/pageObject/BaseTest.java | 85 ++++++++++++++++++++++++++++++++++++++++++++----------------------------------------- src/main/java/com/essa/pageObject/GoodsManage/AddOriginalGoodsPage.java | 26 ++++++++++++++++++++++++-- src/main/java/com/essa/pageObject/GoodsManage/AuditDevGoodsPage.java | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/pageObject/GoodsManage/AuditOriginalOpreatePage.java | 35 ++++++++++++++++++++++++++++++++++- src/main/java/com/essa/pageObject/GoodsManage/GoodsRelesePage.java | 26 ++++++++++++++++++++++++++ src/main/java/com/essa/pageObject/GoodsManage/UpdatePicPage.java | 31 +++++++++++++------------------ src/main/java/com/essa/pageObject/HomePage.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++------ src/main/java/com/essa/pageObject/productDev/AddMatterialPage.java | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/pageObject/productDev/AddProjectPage.java | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- src/main/java/com/essa/pageObject/productDev/EditBOMPage.java | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/pageObject/productDev/MaterialListPage.java | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/pageObject/productDev/ProjectListPage.java | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/com/essa/testSuite/TestAddDevGood.java | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/swing/SwingMain.java | 6 ++++-- src/main/resources/suites/addDevGoods.xml | 15 +++++++++++++++ 17 files changed, 823 insertions(+), 81 deletions(-) create mode 100644 src/main/java/com/essa/pageObject/GoodsManage/AuditDevGoodsPage.java create mode 100644 src/main/java/com/essa/pageObject/productDev/AddMatterialPage.java create mode 100644 src/main/java/com/essa/pageObject/productDev/EditBOMPage.java create mode 100644 src/main/java/com/essa/pageObject/productDev/MaterialListPage.java create mode 100644 src/main/java/com/essa/pageObject/productDev/ProjectListPage.java create mode 100644 src/main/java/com/essa/testSuite/TestAddDevGood.java create mode 100644 src/main/resources/suites/addDevGoods.xml diff --git a/src/main/java/com/essa/framework/BasePage.java b/src/main/java/com/essa/framework/BasePage.java index d760376..bf0fd7a 100644 --- a/src/main/java/com/essa/framework/BasePage.java +++ b/src/main/java/com/essa/framework/BasePage.java @@ -653,12 +653,12 @@ public class BasePage { forceWait(1000); } } - /** - * bpms动态等待,指的是我们后台系统那个加载的圈圈 - */ - protected void dynamicWait() { - dynamicWait(By.xpath("//*[@name='tailDeliveryDay']")); - } +// /** +// * bpms动态等待,指的是我们后台系统那个加载的圈圈 +// */ +// protected void dynamicWait() { +// dynamicWait(By.xpath("//*[@name='tailDeliveryDay']")); +// } /** * 与上面的方法相反,如果元素存在,等待直到元素不存在,最长7秒 @@ -670,6 +670,14 @@ public class BasePage { } } /** + * 我们bpms的加载等待的那个圈圈,这个加载圈消失意味着加载完成 + * @param + * @return + */ + protected void dynamicLoad(){ + dynamicLoad(By.xpath("//*[style='display: block;']")); + } + /** * 连接数据库查询数据 * @param sql 查询sql * @param field 需要的字段,这个方法只支持一个字段查询 diff --git a/src/main/java/com/essa/framework/Model.java b/src/main/java/com/essa/framework/Model.java index 6f3052e..8dc9730 100644 --- a/src/main/java/com/essa/framework/Model.java +++ b/src/main/java/com/essa/framework/Model.java @@ -9,7 +9,7 @@ public class Model { public static String skuNo;//商品编号 public static String buyerNo;//采购商编号 public static String supplierName;//供应商名称 - public static String picPath;//图片路径 + public static String picPath = "C:\\Users\\Administrator\\Pictures\\Camera Roll\\ya.jpg";//图片路径 public static String email = "buyer"+Tools.getTime()+"@essa.cn";//采购商邮箱 public static String invateCode;//邀请码 public static String env;//所选环境 @@ -19,8 +19,25 @@ public class Model { public static int isactivity=0;//是否是活动商品 1:是 0:否 public static String manager;//商品的类目经理 public static String serialNum;//待办流水号 - - + public static String materialName;//物料名称 + public static String projectName;//项目立项书名称 + + public static String getProjectName() { + return projectName; + } + + public static void setProjectName(String projectName) { + Model.projectName = projectName; + } + + public static String getMaterialName() { + return materialName; + } + + public static void setMaterialName(String materialName) { + Model.materialName = materialName; + } + public static String getSerialNum() { return serialNum; } diff --git a/src/main/java/com/essa/pageObject/BaseTest.java b/src/main/java/com/essa/pageObject/BaseTest.java index f84d78e..f13c394 100644 --- a/src/main/java/com/essa/pageObject/BaseTest.java +++ b/src/main/java/com/essa/pageObject/BaseTest.java @@ -8,58 +8,61 @@ import org.openqa.selenium.support.PageFactory; /** * @author Administrator - *测试用例的基类,主要是有登录和调用浏览器的方法 + * 测试用例的基类,主要是有登录和调用浏览器的方法 */ public class BaseTest { - public WebDriver driver; + public WebDriver driver; - public WebDriver getDriver() { - return driver; - } - - /** - * bpms调用浏览器,打开要测试的网页 - */ - public void initsetUp() { - BrowserEngine browserEngine = new BrowserEngine(); + public WebDriver getDriver() { + return driver; + } + + /** + * bpms调用浏览器,打开要测试的网页 + */ + public void initsetUp() { + BrowserEngine browserEngine = new BrowserEngine(); // try { - browserEngine.initConfigData(); + browserEngine.initConfigData(); /*} catch (IOException e) { e.printStackTrace(); }*/ - driver = browserEngine.getBrowser(); - } - - /** - * buyer调用浏览器,将访问buyer的地址 - */ - public void initBuyer() { - BrowserEngine browserEngine = new BrowserEngine(); + driver = browserEngine.getBrowser(); + } + + /** + * buyer调用浏览器,将访问buyer的地址 + */ + public void initBuyer() { + BrowserEngine browserEngine = new BrowserEngine(); // try { - browserEngine.initConfigData(); + browserEngine.initConfigData(); /* } catch (IOException e) { e.printStackTrace(); }*/ - driver = browserEngine.buyerGetBrowser(); - } + driver = browserEngine.buyerGetBrowser(); + } + + /** + * bpms初始化登录页面,登录 + * + * @param account + */ + public void loginValid(String account) { + LoginPage loginPage = PageFactory.initElements(driver, LoginPage.class); + loginPage.login(account, "essa123"); + } - /** - * bpms初始化登录页面,登录 - * @param account - */ - public void loginValid(String account) { - LoginPage loginPage = PageFactory.initElements(driver, LoginPage.class); - loginPage.login(account, "essa123"); - } - /** - * buyer初始化登录 - * @param account - */ - public void loginBuyerValid(String account,String password) { - IndexPage indexPage = PageFactory.initElements(driver, IndexPage.class); - indexPage.toLoginPage(); - BuyerLoginPage loginPage = PageFactory.initElements(driver, BuyerLoginPage.class); - loginPage.login(account, password); - } + /** + * buyer初始化登录 + * + * @param account + */ + public void loginBuyerValid(String account, String password) { + IndexPage indexPage = PageFactory.initElements(driver, IndexPage.class); + indexPage.toLoginPage(); + BuyerLoginPage loginPage = PageFactory.initElements(driver, BuyerLoginPage.class); + loginPage.login(account, password); + } } diff --git a/src/main/java/com/essa/pageObject/GoodsManage/AddOriginalGoodsPage.java b/src/main/java/com/essa/pageObject/GoodsManage/AddOriginalGoodsPage.java index 16b15c9..6ff2ca9 100644 --- a/src/main/java/com/essa/pageObject/GoodsManage/AddOriginalGoodsPage.java +++ b/src/main/java/com/essa/pageObject/GoodsManage/AddOriginalGoodsPage.java @@ -1,5 +1,6 @@ package com.essa.pageObject.GoodsManage; +import com.essa.pageObject.productDev.ProjectListPage; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -28,6 +29,10 @@ public class AddOriginalGoodsPage extends BasePage { //选择供应商 @FindBy (xpath="//*[@ng-click='supplier()']") WebElement selectSupplier; + + //确定按钮-开发商品确认 + @FindBy (xpath = "//*[text()='确定']") + WebElement confrim; //供应商查询方式选择 @FindBy (xpath="//*[@ng-click='showSelect()']") @@ -331,7 +336,7 @@ public class AddOriginalGoodsPage extends BasePage { /** * 选择供应商 - * @param 供应商名称 + * @param * @throws InterruptedException */ public void selectSupplier(String supplierName){ @@ -465,7 +470,7 @@ public class AddOriginalGoodsPage extends BasePage { /** * 原厂商品建档,将上面的方法整合 - * @param supplierName + * @param * @return * @throws InterruptedException */ @@ -478,6 +483,23 @@ public class AddOriginalGoodsPage extends BasePage { goodsSpecifications(); return new GoodsRelesePage(driver); } + /** + *开发商品建档保存 + * @param + * @return 项目立项书列表 + */ + public ProjectListPage addDevGood(){ + forceWait(4000);//页面会刷几次,只能强制等待 + moveHeightScroll("0"); + forceWait(1000); + click(save); + forceWait(1000); + if(isVisibility(By.xpath("//*[text()='确定']"))){ + click(confrim); + } + dynamicLoad(); + return new ProjectListPage(driver); + } /** * 用于断言是否商品建档成功 diff --git a/src/main/java/com/essa/pageObject/GoodsManage/AuditDevGoodsPage.java b/src/main/java/com/essa/pageObject/GoodsManage/AuditDevGoodsPage.java new file mode 100644 index 0000000..b2ec0ba --- /dev/null +++ b/src/main/java/com/essa/pageObject/GoodsManage/AuditDevGoodsPage.java @@ -0,0 +1,52 @@ +package com.essa.pageObject.GoodsManage; + +import com.essa.framework.BasePage; +import com.essa.framework.Model; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +public class AuditDevGoodsPage extends BasePage { + /** + * 构造方法 + * + * @param driver + */ + public AuditDevGoodsPage(WebDriver driver) { + super(driver); + } + /** + * 元素定位 + */ + @FindBy (xpath = "//*[@ng-model='query.skuCode']") + WebElement skuNo;//sku编号 + + @FindBy (xpath = "//*[text()='查询']") + WebElement search;//查询按钮 + + @FindBy (xpath = "//*[@ng-change='getCheckedStatus();']") + WebElement checkbox;//复选框 + + @FindBy (xpath = "//*[text()='审核']") + WebElement audit;//审核 + + /** + * 页面方法 + */ + /** + *跳转到审核页面,这里开发商品共用的原厂商品的审核页面 + * @param + * @return 原厂商品审核页面 + */ + public AuditOriginalOpreatePage auditDevGood(){ +// dynamicLoad(); + dynamicWait(By.xpath("//table[@class='table border-default margin-bottom-80 ng-scope ng-table']//tbody[1]")); + sendKeys(skuNo, Model.getSkuNo()); + click(search); + forceWait(1000); + click(checkbox); + click(audit); + return new AuditOriginalOpreatePage(driver); + } +} diff --git a/src/main/java/com/essa/pageObject/GoodsManage/AuditOriginalOpreatePage.java b/src/main/java/com/essa/pageObject/GoodsManage/AuditOriginalOpreatePage.java index 159250c..c807d3a 100644 --- a/src/main/java/com/essa/pageObject/GoodsManage/AuditOriginalOpreatePage.java +++ b/src/main/java/com/essa/pageObject/GoodsManage/AuditOriginalOpreatePage.java @@ -1,5 +1,6 @@ package com.essa.pageObject.GoodsManage; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -25,6 +26,18 @@ public class AuditOriginalOpreatePage extends BasePage { //审核通过提示语 @FindBy(xpath="//*[text()='商品审核已通过'") WebElement succeedMessage; + + //定价销售 + @FindBy (xpath = "//*[@ng-model='skuItem.isFixedSale']") + WebElement isFixedSale; + + //毛利率 + @FindBy (xpath = "//*[@ng-model='skuItem.grossProfit2']") + WebElement grossProfit; + + //工厂货号重复时,确定按钮 + @FindBy (xpath = "//*[text()='确定']") + WebElement confirm; /* * 页面方法 @@ -36,8 +49,28 @@ public class AuditOriginalOpreatePage extends BasePage { */ public AuditOriginalGoodsPage auditPass() { forceWait(2000); - moveHeightScroll("100"); + moveHeightScroll("0"); + click(pass); + forceWait(500); + if (isVisibility(By.xpath("//*[text()='确定']"))) + click(confirm); + return new AuditOriginalGoodsPage(driver); + } + /** + *开发商品审核通过,要设置毛利率 + * @param + * @return AuditOriginalGoodsPage + */ + public AuditOriginalGoodsPage auditDevGoodPass(){ + forceWait(2000); + moveHeightScroll("50"); + selectElement(isFixedSale,"否"); + sendKeys(grossProfit,"5"); + moveHeightScroll("0"); click(pass); + forceWait(500); + if (isVisibility(By.xpath("//*[text()='确定']"))) + click(confirm); return new AuditOriginalGoodsPage(driver); } diff --git a/src/main/java/com/essa/pageObject/GoodsManage/GoodsRelesePage.java b/src/main/java/com/essa/pageObject/GoodsManage/GoodsRelesePage.java index 0427dc7..520b929 100644 --- a/src/main/java/com/essa/pageObject/GoodsManage/GoodsRelesePage.java +++ b/src/main/java/com/essa/pageObject/GoodsManage/GoodsRelesePage.java @@ -1,5 +1,6 @@ package com.essa.pageObject.GoodsManage; +import com.essa.framework.Model; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -37,6 +38,15 @@ public class GoodsRelesePage extends BasePage { String no = AddOriginalGoodsPage.getSkuNameNo(); return driver.findElement(By.xpath("//*[contains(text(),'"+no+"')]/../../td[1]/input")); } + + @FindBy (xpath = "//*[@ng-model='query.keyword']") + WebElement keyword;//关键字 + + @FindBy (xpath = "//*[@ng-click='search()']") + WebElement search;//查询按钮 + + @FindBy (xpath = "//*[@ng-table='preUploadCtrlTableParams']/tbody[1]/tr[1]/td[1]/input") + WebElement checkbox;//第一个复选框 //图片更新 @FindBy(xpath="//*[contains(text(),'图片更新')]") @@ -73,6 +83,22 @@ public class GoodsRelesePage extends BasePage { click(edit); return new EditSpuPage(driver); } + + /** + *开发商品更新图片 + * @param + * @return 更新图片详情页 + */ + public UpdatePicPage toUpdateDevGoodPic(){ + forceWait(2000); + dynamicWait(By.xpath("//*[@ng-table='preUploadCtrlTableParams']/tbody[1]/tr[1]/td[1]/input")); + sendKeys(keyword,Model.getSkuNo()); + click(search); + forceWait(1500); + click(checkbox); + click(updatePic); + return new UpdatePicPage(driver); + } /** * 断言商品建档是否成功 diff --git a/src/main/java/com/essa/pageObject/GoodsManage/UpdatePicPage.java b/src/main/java/com/essa/pageObject/GoodsManage/UpdatePicPage.java index 062accf..66d5478 100644 --- a/src/main/java/com/essa/pageObject/GoodsManage/UpdatePicPage.java +++ b/src/main/java/com/essa/pageObject/GoodsManage/UpdatePicPage.java @@ -1,5 +1,6 @@ package com.essa.pageObject.GoodsManage; +import com.essa.framework.Model; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -15,7 +16,7 @@ public class UpdatePicPage extends BasePage { public UpdatePicPage(WebDriver driver) { super(driver); } - public static String picPath; +// public static String picPath; /* * 元素定位 @@ -62,18 +63,12 @@ public class UpdatePicPage extends BasePage { forceWait(2000); dynamicWait(By.xpath("//*[text()='SPU信息']")); click(spuUploadPic); - uploadFile(picPath); - //如果spu图片还在上传,则等待2秒 - /*while(!isElementExist(spuPic)) { - forceWait(2000); - }*/ +// uploadFile(picPath); + uploadFile(Model.getPicPath()); dynamicWait(By.xpath("//*[@class='load-pic']")); click(skuUploadPic); - uploadFile(picPath); - //如果默认的sku图片还存在,说明图片还在上传,继续等待 - /*while (!isElementExist(skuPic)) { - forceWait(2000); - }*/ +// uploadFile(picPath); + uploadFile(Model.getPicPath()); dynamicWait(By.xpath("//*[contains(@ng-click,'picInfo,')]")); forceWait(1000); click(save); @@ -88,11 +83,11 @@ public class UpdatePicPage extends BasePage { return isElementExist(succeedMessage); } - /** - * 通过GUI设置本机图片路径 - * @param picpath - */ - public static void setPicPath(String picpath) { - picPath = picpath; - } +// /** +// * 通过GUI设置本机图片路径 +// * @param picpath +// */ +// public static void setPicPath(String picpath) { +// picPath = picpath; +// } } diff --git a/src/main/java/com/essa/pageObject/HomePage.java b/src/main/java/com/essa/pageObject/HomePage.java index 4060985..6c57aec 100644 --- a/src/main/java/com/essa/pageObject/HomePage.java +++ b/src/main/java/com/essa/pageObject/HomePage.java @@ -2,18 +2,16 @@ package com.essa.pageObject; import com.essa.pageObject.DocumentaryManage.POBoardPage; import com.essa.pageObject.DocumentaryManage.ReceiptCorePage; +import com.essa.pageObject.GoodsManage.*; import com.essa.pageObject.SupplierManage.SupplierOperationsTrackPage; +import com.essa.pageObject.productDev.AddMatterialPage; +import com.essa.pageObject.productDev.AddProjectPage; +import com.essa.pageObject.productDev.ProjectListPage; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import com.essa.framework.BasePage; import com.essa.framework.Model; -import com.essa.pageObject.GoodsManage.AddOriginalGoodsPage; -import com.essa.pageObject.GoodsManage.AuditMarketGoodsPage; -import com.essa.pageObject.GoodsManage.AuditOriginalGoodsPage; -import com.essa.pageObject.GoodsManage.GoodsBankPage; -import com.essa.pageObject.GoodsManage.GoodsRelesePage; -import com.essa.pageObject.GoodsManage.MarketGoodsRelesePage; import com.essa.pageObject.DocumentaryManage.PODocumentaryListPage; import com.essa.pageObject.StorageManage.GoodsReceiveTaskPage; import com.essa.pageObject.StorageManage.NoticeReceivePage; @@ -60,6 +58,9 @@ public class HomePage extends BasePage{ //商品管理 @FindBy (xpath="//*[text()='商品管理']") WebElement goodsManage; + + @FindBy (xpath = "//*[text()='开发商品发布审核']") + WebElement DevGoodAudit;//开发商品发布审核 //商品库 @FindBy (xpath="//*[text()='商品库']") @@ -177,6 +178,10 @@ public class HomePage extends BasePage{ @FindBy (xpath = "//a[contains(text(),'收货任务管理')]") WebElement goodsReceiveTask; + //物料新增 + @FindBy (xpath = "//*[text()='物料新增']") + WebElement addMaterial; + /* * 方法 */ @@ -214,6 +219,7 @@ public class HomePage extends BasePage{ * @return GoodsRelesePage */ public GoodsRelesePage tGoodsRelesePage() { + getHome(); click(goodsManage); click(goodsPublish); return new GoodsRelesePage(driver); @@ -442,4 +448,45 @@ public class HomePage extends BasePage{ click(Receipt_core); return new ReceiptCorePage (driver); } + /** + *进入开发商品发布审核 + * @param + * @return 开发商品发布审核 + */ + public AuditDevGoodsPage toAuditDevgoodsPage(){ + click(goodsManage); + click(DevGoodAudit); + return new AuditDevGoodsPage(driver); + } + /** + *进入项目立项书新增页面 + * @param + * @return 项目立项书新增 + */ + public AddProjectPage toAddProject(){ + click(productDev); + click(addProject); + return new AddProjectPage(driver); + } + /** + *进入物料新增页面 + * @param + * @return 物料新增页面 + */ + public AddMatterialPage toMaterialPage(){ + click(productDev); + click(addMaterial); + return new AddMatterialPage(driver); + } + /** + *进入项目立项书列表 + * @param + * @return 项目立项书查询 + */ + public ProjectListPage toProjectListPage(){ + getHome(); + click(productDev); + click(quiryProject); + return new ProjectListPage(driver); + } } \ No newline at end of file diff --git a/src/main/java/com/essa/pageObject/productDev/AddMatterialPage.java b/src/main/java/com/essa/pageObject/productDev/AddMatterialPage.java new file mode 100644 index 0000000..1eeed37 --- /dev/null +++ b/src/main/java/com/essa/pageObject/productDev/AddMatterialPage.java @@ -0,0 +1,123 @@ +package com.essa.pageObject.productDev; + +import com.essa.framework.BasePage; +import com.essa.framework.Model; +import com.essa.framework.Tools; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +/* +* @Description: 新增物料页面 +* @Author: ZengJin +* @CreateTime: 2018/10/29 +*/ +public class AddMatterialPage extends BasePage { + /** + * 构造方法 + * + * @param driver + */ + public AddMatterialPage(WebDriver driver) { + super(driver); + } + + /* + 元素定位 + */ + @FindBy (xpath = "//*[text()='物料基础属性']") + WebElement checkPoint;//检查点,物料基础属性 + + @FindBy (xpath = "//*[@ng-model='item.supplierPrice']") + WebElement supplierPrice;//光身:供应商报价 + + @FindBy (xpath = "//*[@ng-model='item.bodyFclPrice']") + WebElement bodyFclPrice;//光身:供应商整柜报价 + + @FindBy (xpath = "//*[@ng-model='item.purchaseMoq']") + WebElement purchaseMoq;//光身:采购MOQ + + @FindBy (xpath = "//*[@ng-model='item.deliverDay']") + WebElement deliverDay;//光身:货期 + + @FindBy (xpath = "//*[@ng-click='save()']") + WebElement save;//保存 + + @FindBy (xpath = "//*[@ng-model='model.matFromType' and @ng-disabled='isUpdate']") + WebElement matFrom;//物料来源 + + @FindBy (xpath = "//*[@ng-model='model.name']") + WebElement matName;//物料名称 + + @FindBy (xpath = "//*[@ng-model='model.baseUnit']") + WebElement baseUnit;//基准单位 + + @FindBy (xpath = "//*[@ng-click='openSelector()']") + WebElement matType;//物料类型 + + @FindBy (xpath = "//*[text()='纸箱']") + WebElement carton;//物料类型:纸箱 + + @FindBy (xpath = "//*[text()='海德印刷厂']/../td[3]/input") + WebElement factoryNo;//工厂货号 + + @FindBy (xpath = "//*[text()='海德印刷厂']/../td[5]/select") + WebElement purchaseUnit;//物料采购单位 + + @FindBy (xpath = "//*[text()='海德印刷厂']/../td[6]/input") + WebElement unitExchangeRate;//换算值 + + @FindBy (xpath = "//*[text()='海德印刷厂']/../td[8]/input") + WebElement matSupplierPrice;//物料:供应商报价 + + @FindBy (xpath = "//*[text()='海德印刷厂']/../td[10]/input") + WebElement matPurchaseMoq;//物料:采购MOQ + + @FindBy (xpath = "//*[text()='海德印刷厂']/../td[12]/input") + WebElement matDeliverDay;//物料:货期 + + /* + 页面方法 + */ + /** + * @Description: 新增光身物料方法 + * @param: [] + * @return: 项目立项书列表 + * @Author: ZengJin + * @CreateTime: 2018/10/29 + */ + public ProjectListPage addBodyMat(){ + mywait(checkPoint); + moveHeightScroll("100"); + sendKeys(supplierPrice,"15"); + sendKeys(bodyFclPrice,"14"); + sendKeys(purchaseMoq,"15"); + sendKeys(deliverDay,"7"); + click(save); + return new ProjectListPage(driver); + } + /** + * @Description:新增物料 + * @return: 物料列表页 + * @Author: ZengJin + * @CreateTime: 2018/10/29 + */ + public MaterialListPage addMaterial(){ + mywait(checkPoint); + selectElement(matFrom,"自主物料"); + Model.setMaterialName("物料" + Tools.getTime()); + sendKeys(matName,Model.getMaterialName()); + selectElement(baseUnit,"只"); + moveHeightScroll("100"); + click(matType); + click(carton); + forceWait(1000); + sendKeys(factoryNo,Tools.getFactoryNo()); + selectElement(purchaseUnit,"只"); + sendKeys(unitExchangeRate,"1"); + sendKeys(matSupplierPrice,"5"); + sendKeys(matPurchaseMoq,"15"); + sendKeys(matDeliverDay,"5"); + click(save); + return new MaterialListPage(driver); + } +} diff --git a/src/main/java/com/essa/pageObject/productDev/AddProjectPage.java b/src/main/java/com/essa/pageObject/productDev/AddProjectPage.java index 64f5d8b..0b8bdff 100644 --- a/src/main/java/com/essa/pageObject/productDev/AddProjectPage.java +++ b/src/main/java/com/essa/pageObject/productDev/AddProjectPage.java @@ -1,11 +1,16 @@ package com.essa.pageObject.productDev; +import com.essa.framework.Model; +import com.essa.framework.Tools; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; import com.essa.framework.BasePage; +import java.util.Date; + /** * @author Administrator *新增项目立项书 @@ -50,12 +55,16 @@ public class AddProjectPage extends BasePage { WebElement Transactor1; //处理人-linrong - @FindBy (xpath ="//*[@id='role-user-select-box']/ul/li[3]/span") + @FindBy (xpath ="//tbody//tr[1]//td[2]//div[1]//div[1]//ul[1]//li[3]") WebElement linrong1; //任务处理人 -第二个 @FindBy (xpath ="//*[@class='col-md-14']/table/tbody/tr[2]/td[2]/div/input") WebElement Transactor2; + + //处理人-第二个 + @FindBy (xpath ="//tbody//tr[2]//td[2]//div[1]//div[1]//ul[1]//li[3]") + WebElement linrong2; //成员角色 -第一个 @FindBy (xpath ="//*[@class='col-md-14']/table/tbody/tr[1]/td[3]/select") @@ -68,8 +77,75 @@ public class AddProjectPage extends BasePage { //选择改版商品信息 @FindBy (xpath ="//*[text()='选择']") WebElement selectGoods; - + + @FindBy (xpath = "//*[@name='keyword']") + WebElement searchContent; + + //添加商品-查询按钮 + @FindBy (xpath = "//*[@ng-click='search(false)']") + WebElement addSkuSearch; + + //添加商品-展开商品信息 + @FindBy (xpath = "//*[contains(@class,'fa fa-angle-double-dow')]") + WebElement showSku; + + //添加商品-搜索结果复选框 + @FindBy (xpath = "//*[@ng-repeat='list in item.skus']/tbody") + WebElement skuCheckbox; + + //确定按钮 + @FindBy (xpath = "//*[contains(text(),'确定')]") + WebElement confirm; + //保存 @FindBy (xpath ="//*[contains(text(),'保存')]") WebElement save; + + //新增光身物料 + @FindBy (xpath = "//*[@ng-click='relateAdd()']") + WebElement addBodyMat; + + /* + 页面方法 + */ + /* + * @Description:新增项目立项书 + * @param: [] + * @return: 新增光身物料页面 + * @Author: ZengJin + * @CreateTime: 2018/10/29 + */ + public AddMatterialPage addProject(){ + mywait(revisonType); + selectElement(revisonType,"自主改版"); + Model.setProjectName("自主改版"+ Tools.getTime()); + sendKeys(projectName,Model.getProjectName()); + click(projectLeader); + click(linrong); + selectElement(devLevel,"小改"); + selectElement(devSerial,"男孩系列"); + click(addMember); + click(Transactor1); + forceWait(500); + click(linrong1); + selectElement(role1,"项目经理"); + click(Transactor2); + forceWait(500); + click(linrong2); + selectElement(role2,"翻译人员"); + click(selectGoods); + dynamicLoad(By.xpath("//*[@class='loading ng-scope']")); + String no = DBSqlSearch("SELECT no FROM prd_goods_sku WHERE src=1 ORDER BY create_time DESC LIMIT 1","no"); + sendKeys(searchContent,no); + click(addSkuSearch); + forceWait(1000); + click(showSku); + click(skuCheckbox); + click(confirm); + forceWait(3000); + click(save); + forceWait(1000); + click(addBodyMat); + return new AddMatterialPage(driver); + } } diff --git a/src/main/java/com/essa/pageObject/productDev/EditBOMPage.java b/src/main/java/com/essa/pageObject/productDev/EditBOMPage.java new file mode 100644 index 0000000..b8d288a --- /dev/null +++ b/src/main/java/com/essa/pageObject/productDev/EditBOMPage.java @@ -0,0 +1,76 @@ +package com.essa.pageObject.productDev; + +import com.essa.framework.BasePage; +import com.essa.framework.Model; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +/** +* @Description: BOM修改页面 +* @Author: ZengJin +* @CreateTime: 2018/10/29 +*/ +public class EditBOMPage extends BasePage { + /** + * 构造方法 + * + * @param driver + */ + public EditBOMPage(WebDriver driver) { + super(driver); + } + /** + * 元素定位 + */ + @FindBy (xpath = "//*[@ng-click='materialChoose()']") + WebElement matChoose;//物料选取 + + @FindBy (xpath = "//*[@name='keyword']") + WebElement keyword;//关键字查询 + + @FindBy (xpath = "//*[@name='keyword']/../span/button") + WebElement search;//查询按钮 + + @FindBy (xpath = "//*[@ng-click='materialSelected(item)']") + WebElement checkbox;//复选框 + + @FindBy (xpath = "//*[contains(text(),'选定')]") + WebElement selectedConfirm;//选定 + + @FindBy (xpath = "//*[text()='设置']") + WebElement set;//集单物料:设置 + + @FindBy (xpath = "//*[@ng-click='selectBulkMat(item)']") + WebElement selectBulkMat;//待选择的物料 + + @FindBy (xpath = "//*[@ng-click='save()']") + WebElement save;//确定修改 + + /** + * 页面方法 + */ + /** + *编辑BOM,设置集单物料等 + * @param + * @return 项目立项书列表 + */ + public ProjectListPage editBom(){ + mywait(matChoose); + click(matChoose); + forceWait(500); + sendKeys(keyword, Model.getMaterialName()); + click(search); + forceWait(1000); + click(checkbox); + click(selectedConfirm); + forceWait(500); + click(set); + click(selectBulkMat); + click(selectedConfirm); + forceWait(500); + click(save); + return new ProjectListPage(driver); + } + +} diff --git a/src/main/java/com/essa/pageObject/productDev/MaterialListPage.java b/src/main/java/com/essa/pageObject/productDev/MaterialListPage.java new file mode 100644 index 0000000..d69ff8b --- /dev/null +++ b/src/main/java/com/essa/pageObject/productDev/MaterialListPage.java @@ -0,0 +1,65 @@ +package com.essa.pageObject.productDev; + +import com.essa.framework.BasePage; +import com.essa.framework.Model; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +/* +* @Description:物料列表页面 +* @Author: ZengJin +* @CreateTime: 2018/10/29 +*/ +public class MaterialListPage extends BasePage { + /** + * 构造方法 + * + * @param driver + */ + public MaterialListPage(WebDriver driver) { + super(driver); + } + /* + 元素定位 + */ + @FindBy (xpath = "//table[@id='table-material-list']//tbody/tr[1]") + WebElement firstResult;//列表第一个结果 + + @FindBy (xpath = "//*[@name='keyWord']") + WebElement keyword;//关键字查询 + + @FindBy (xpath = "//*[@name='keyWord']/../span/button") + WebElement search;//查询按钮 + + @FindBy (xpath = "//*[contains(text(),'供应商关联类型设置')]") + WebElement supplierCatConfig;//供应商关联类型设置 + + @FindBy (xpath = "//tr[@class='ng-scope active']//select[@class='form-control ng-isolate-scope ng-pristine ng-valid']") + WebElement AssociatioType;//关联类型 + + @FindBy (xpath = "//button[contains(text(),'确定')]") + WebElement confirm;//确定 + + /* + 页面方法 + */ + /** + * @Description:设置核心供应商 + * @return: 物料列表 + * @Author: ZengJin + * @CreateTime: 2018/10/29 + */ + public MaterialListPage setSupplierCatConfig(){ + mywait(firstResult); + sendKeys(keyword,Model.getMaterialName()); + click(search); + mywait(firstResult); + forceWait(1000); + click(supplierCatConfig); + forceWait(1000); + selectElement(AssociatioType,"核心供应商"); + click(confirm); + return new MaterialListPage(driver); + } +} diff --git a/src/main/java/com/essa/pageObject/productDev/ProjectListPage.java b/src/main/java/com/essa/pageObject/productDev/ProjectListPage.java new file mode 100644 index 0000000..db81072 --- /dev/null +++ b/src/main/java/com/essa/pageObject/productDev/ProjectListPage.java @@ -0,0 +1,99 @@ +package com.essa.pageObject.productDev; + +import com.essa.framework.BasePage; +import com.essa.framework.Model; +import com.essa.pageObject.GoodsManage.AddOriginalGoodsPage; +import org.openqa.selenium.By; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; + +/** +* @Description: 项目立项书列表页面 +* @Author: ZengJin +* @CreateTime: 2018/10/29 +*/ +public class ProjectListPage extends BasePage { + /** + * 构造方法 + * + * @param driver + */ + public ProjectListPage(WebDriver driver) { + super(driver); + } + + /** + 元素定位 + */ + @FindBy (xpath = "//table[@class='tree-grid table table-hover table-even-striped no-border border-default text-center table-fixed ng-scope ng-table']//tbody//tr[1]") + WebElement firstResult;//第一个查询结果 + + @FindBy (xpath = "//*[@name='keyWord']") + WebElement keyword;//关键字查询 + + @FindBy (xpath = "//*[@name='keyWord']/../span/button") + WebElement search;//查询按钮 + + @FindBy (xpath = "//*[@ng-click='updateBom()']") + WebElement updateBom;//BOM更新 + + @FindBy (xpath = "//*[text()='确定']") + WebElement confirm;//确定按钮 + + @FindBy (xpath = "//*[@ng-click='singleGoodsPublic()']") + WebElement DevGoodPublic;//开发单品发布 + + @FindBy (xpath = "//*[contains(text(),'不选择SPU')]") + WebElement NotChooseSpu;//不选择SPU + + @FindBy (xpath = "//*[@data-ng-bind='item.publishSkuCode']") + WebElement DevGoodNo;//开发商品编号 + + /** + * 页面方法 + */ + /** + *BOM更新方法 + * @param + * @return 编辑BOM页面 + */ + public EditBOMPage updateBom(){ + mywait(firstResult); + sendKeys(keyword,Model.getProjectName()); + click(search); + dynamicLoad(); + click(firstResult); + click(updateBom); + return new EditBOMPage(driver); + } + + /** + *开发单品发布,由于这里只是点击一下保存,故共用新增原厂商品的一个保存方法 + * @param + * @return 确认开发商品档案页面 + */ + public AddOriginalGoodsPage publicDevGood(){ + click(confirm); + sendKeys(keyword,Model.getProjectName()); + dynamicWait(By.xpath("//table[@class='tree-grid table table-hover table-even-striped no-border border-default text-center table-fixed ng-scope ng-table']//tbody//tr[1]")); + click(search); + dynamicLoad(); + click(firstResult); + click(DevGoodPublic); + forceWait(1000); + click(NotChooseSpu); + return new AddOriginalGoodsPage(driver); + } + /** + *获取到开发商品的编号,并且传递到model的skuNo字段中 + * @param + * @return + */ + public void getDevGoodNo(){ + sendKeys(keyword,Model.getProjectName()); + click(search); + dynamicLoad(); + Model.setSkuNo(getText(DevGoodNo)); + } +} diff --git a/src/main/java/com/essa/testSuite/TestAddDevGood.java b/src/main/java/com/essa/testSuite/TestAddDevGood.java new file mode 100644 index 0000000..8bcb3d2 --- /dev/null +++ b/src/main/java/com/essa/testSuite/TestAddDevGood.java @@ -0,0 +1,83 @@ +package com.essa.testSuite; + +import com.essa.pageObject.BaseTest; +import com.essa.pageObject.GoodsManage.*; +import com.essa.pageObject.HomePage; +import com.essa.pageObject.productDev.*; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.PageFactory; +import org.testng.annotations.AfterClass; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + + +/** +* @Description: 新增开发商品测试用例 +* @Author: ZengJin +* @CreateTime: 2018/10/29 +*/ +public class TestAddDevGood extends BaseTest { + + WebDriver driver; + + @BeforeClass + public void setUp() { + initsetUp(); + loginValid("linrong"); + } + + @AfterClass + public void tearDown() { + driver.quit(); + } + + + /** + *新增开发商品 + * @param + * @return void + */ + @Test + public void addDevGood(){ + this.driver = getDriver(); + HomePage homePage = PageFactory.initElements(driver,HomePage.class); + AddProjectPage addProjectPage = PageFactory.initElements(driver,AddProjectPage.class); + AddMatterialPage addMatterialPage = PageFactory.initElements(driver,AddMatterialPage.class); + MaterialListPage materialListPage = PageFactory.initElements(driver,MaterialListPage.class); + ProjectListPage projectListPage = PageFactory.initElements(driver,ProjectListPage.class); + EditBOMPage editBOMPage = PageFactory.initElements(driver,EditBOMPage.class); + AddOriginalGoodsPage addOriginalGoodsPage = PageFactory.initElements(driver,AddOriginalGoodsPage.class); + homePage.toAddProject(); + addProjectPage.addProject();//新增立项书 + addMatterialPage.addBodyMat();//新增光身物料 + homePage.toMaterialPage(); + addMatterialPage.addMaterial();//新增物料 + materialListPage.setSupplierCatConfig();//设置核心供应商 + homePage.toProjectListPage(); + projectListPage.updateBom();//更新BOM + editBOMPage.editBom();//编辑BOM,设置集单物料 + projectListPage.publicDevGood();//发布开发单品 + addOriginalGoodsPage.addDevGood();//确认发布开发商品 + projectListPage.getDevGoodNo();//将新增的skuNo传递到model + } + /** + *审核开发商品 + * @param + * @return + */ + @Test + public void publicDevGood(){ + this.driver = getDriver(); + HomePage homePage = PageFactory.initElements(driver,HomePage.class); + GoodsRelesePage goodsRelesePage = PageFactory.initElements(driver,GoodsRelesePage.class); + UpdatePicPage updatePicPage = PageFactory.initElements(driver,UpdatePicPage.class); + AuditDevGoodsPage auditDevGoodsPage = PageFactory.initElements(driver,AuditDevGoodsPage.class); + AuditOriginalOpreatePage auditOriginalOpreatePage = PageFactory.initElements(driver,AuditOriginalOpreatePage.class); + homePage.tGoodsRelesePage(); + goodsRelesePage.toUpdateDevGoodPic();//更新开发商品图片 + updatePicPage.upDatePic(); + homePage.toAuditDevgoodsPage();//进入开发商品发布审核 + auditDevGoodsPage.auditDevGood(); + auditOriginalOpreatePage.auditDevGoodPass();//审核通过 + } +} diff --git a/src/main/java/swing/SwingMain.java b/src/main/java/swing/SwingMain.java index 8b88238..0d67e09 100644 --- a/src/main/java/swing/SwingMain.java +++ b/src/main/java/swing/SwingMain.java @@ -565,7 +565,8 @@ public class SwingMain { List suites = new ArrayList(); if (Scene == "新增原厂商品") { AddOriginalGoodsPage.setSupplierName(supplierName.getText()); - UpdatePicPage.setPicPath(picPath.getText()); +// UpdatePicPage.setPicPath(picPath.getText()); + Model.setPicPath(picPath.getText()); suites.add(SuitesEnum.ADD_ORIGINAL_GOODS.getSuiteName()); // suites.add(".\\resources\\suites\\addOriginalGoods.xml");// 图形界面 } else if (Scene == "新增市场商品") { @@ -576,7 +577,8 @@ public class SwingMain { // suites.add(".\\resources\\suites\\addMarketGoods.xml");// 图形界面 } else if (Scene == "发布团购") { AddOriginalGoodsPage.setSupplierName(supplierName.getText()); - UpdatePicPage.setPicPath(picPath.getText()); +// UpdatePicPage.setPicPath(picPath.getText()); + Model.setPicPath(picPath.getText()); suites.add(SuitesEnum.PUBLISH_GROUP_PURCHASE.getSuiteName()); // suites.add(".\\resources\\suites\\publishGroupPurchase.xml");// 图形界面 } else if (Scene == "采购商注册") { diff --git a/src/main/resources/suites/addDevGoods.xml b/src/main/resources/suites/addDevGoods.xml new file mode 100644 index 0000000..7c501b9 --- /dev/null +++ b/src/main/resources/suites/addDevGoods.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + -- libgit2 0.21.2