POBoardPage.java 7.85 KB
package com.essa.pageObject.DocumentaryManage;

import com.essa.framework.Model;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

import com.essa.framework.BasePage;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;

import java.util.Date;

public class POBoardPage extends BasePage {

	public POBoardPage(WebDriver driver) {
		super(driver);
	}
	/*
	 * 元素定位
	 */
	@FindBy (xpath = "//*[text()='订单任务看板']")
	WebElement taskBoard;//订单任务看板

	@FindBy (xpath = "//*[@ng-model='keyword']")
	WebElement keyword;//关键字查询输入框

	@FindBy (xpath ="//*[@ng-model='keyword']/../span/button")
	WebElement search;//查询按钮

	@FindBy (xpath = "//*[@id='detailView']/div/div[3]/div[1]/div/div/table/tbody/tr[1]/td/div[2]/div[1]/input")
	WebElement firstCheckbox;//第一个复选框

	@FindBy (xpath ="//button[contains(text(),'转在途尾货')]")
	WebElement toTail;//转在途尾货按钮

	// 通知收货
	@FindBy (xpath = "//button[contains(text(),'通知收货')]")
	WebElement noticeReceive;

	//收货日期
	@FindBy (xpath = "//*[contains(text(),'收货日期')]")  ///label[@class='control-label col-sm-8']
			WebElement reveiveDate;

	// 收货日期输入框
	@FindBy (xpath = " //div[@class='col-sm-16']//input[@type='text']")
	WebElement inputReceiveDate;

	// 确定
	@FindBy (xpath = "//button[contains(text(),'确定')]")
	WebElement submit;

	// 通知装柜
	@FindBy(xpath = "//button[contains(text(),'通知装柜')]")
	WebElement noticeLoad;

	// 装柜日期空白处
	@FindBy(xpath = " //label[@class='control-label col-md-8']")
	WebElement loadDate;

	// 装柜日期输入框
	@FindBy (xpath = "//input[@name='newDate']")
	WebElement inutLoadDate;


	/*
	 * 页面方法
	 */
	/**
	 * 转在途尾货
	 * @return 转在途尾货页面
	 */
	public ConvertTailPage toTail() {
		dynamicLoad(By.xpath("//*[style='display: block;']"));//等待页面加载完成
		click(taskBoard);
		dynamicLoad(By.xpath("//*[style='display: block;']"));
		sendKeys(keyword, Model.getSkuNo());
		click(search);
		dynamicLoad(By.xpath("//*[style='display: block;']"));
		click(firstCheckbox);
		click(toTail);
		return new ConvertTailPage(driver);
	}

	/**
	 * PO通知收货和通知装柜
	 */
	// 通知收货
	public POBoardPage noticeReceive(){
		click(noticeReceive);
		jsExecutorRemoveAttribute(inputReceiveDate,"readonly");
		String date = getDateTimeByFormat(new Date(),"MM/dd/yyyy");
		sendKeys(inputReceiveDate,date);
		click(reveiveDate);
		click(submit);
		return new POBoardPage(driver);
	}

	public boolean isNoticeReceSucceed(){
		forceWait(2000);
		return isVisibility(By.xpath("//*[contains(text(),'收货中')]"));
	}

	//通知装柜
	public POBoardPage noticeLoad(){
		click(noticeLoad);
		jsExecutorRemoveAttribute(inutLoadDate,"readonly");
		String date = getDateTimeByFormat(new Date(),"MM/dd/yyyy");
		sendKeys(inutLoadDate,date);
		click(loadDate);
		forceWait(3000);
		click(submit);
		forceWait(2000);
		return new POBoardPage(driver);
	}

	public boolean isNoticeLoadSucceed(){
		forceWait(2000);
		return isVisibility(By.xpath("//*[contains(text(),'装柜中')]"));
	}

    public static class ReceiptCorePage extends BasePage {

        public ReceiptCorePage(WebDriver driver) { super(driver);}

        /*
        * 页面元素定位
        * */

        @FindBy (xpath = "//i[@class='iconfont icon-double-arrow-right']")
    //    @FindBy (xpath = "//*[contains(text(),'高级查询')]")
        WebElement advancedQuery; //高级查询

        @FindBy (xpath = "/html[1]/body[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/form[2]/div[5]/div[1]/input[1]")
    //    @FindBy (xpath = "//input[@type='text' and @ng-model='query.params.poCode']")

        WebElement PO_numbers;  //PO单号

        @FindBy (xpath = "//*[text()='查询']")
    //    @FindBy (xpath = "//*/button[@type='submit']")

        WebElement Query ; //查询

        @FindBy (xpath = "//tbody//tr[1]")
    //    @FindBy (xpath = "//*[@id=\"frontSendListCtrlView\"]/div/div/table/tbody/tr[1]")

        WebElement list_1; //列表第一条数据

        @FindBy (xpath = "/html[1]/body[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/table[1]/tbody[1]")

        WebElement list; //列表

        @FindBy (xpath = "/html[1]/body[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/table[1]/tbody[1]/tr[1]/td[1]")

        WebElement document_code; //单据编号

        @FindBy (xpath = "//*[text()='开始发单']")
    //    @FindBy (xpath = "/html[1]/body[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/div[1]/button[1]")

        WebElement  start_billing;  // 开始发单

        @FindBy (xpath = "//button[@class='btn btn-danger ng-scope']")

        WebElement  start_billing_1 ;  //前台发单扫码平台的开始发单

        @FindBy (xpath = "//div[@class='input-group ng-isolate-scope ng-pristine ng-valid']//input[@type='text']")

        WebElement input_document_code;//单据编号输入框

        @FindBy (xpath = "//button[@type='button' and @ng-click='clickBtn()']")
    //            @FindBy (xpath = "//*[contains(@ng-click,'clickBtn')]")

                WebElement  search ;// 搜索按钮

        @FindBy (xpath = "//a[contains(text(),'扫码确认接单')]")

        WebElement Confirm_billing ; // 扫码确认接单

        @FindBy (xpath = "//*[text()='接单完成']")

        WebElement finish_billing; //接单完成

        @FindBy (xpath = "//*[contains(text(),'所选的工厂订单状态必须为“制单中”或“重新发单”')]")

        WebElement Fail_billing; //发单失败

        @FindBy (xpath = "//*[contains(text(),'所选的工厂订单状态必须为“发单中”')]")

        //*[coantains(text(),'所选的工厂订单状态必须为']
       // *[@data-notify='message']
       //*[@data-notify='message'] and text()='所选的工厂订单状态必须为“发单中”'
        //*[(text()=' 所选的工厂订单状态必须为“发单中”']

        WebElement Fail_order; //接单失败

        @FindBy (xpath = "//*[contains(text(),'操作成功')]")

        WebElement  Succeed_billing; //发单成功





        /*
        * 页面方法
        * */

        public  void  BillOrder(String PO_Code) {
            click(advancedQuery);
            forceWait(1000);

            sendKeys(PO_numbers,PO_Code);
            forceWait(1000);

            click(Query);
    //        forceWait(3000);

            dynamicWait(By.xpath("/html[1]/body[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/table[1]/tbody[1]"));

    //        actionDoubleClick(document_code); // 双击元素
    //        forceWait(1000);
            String Fo = document_code.getText();
            forceWait(1000);

            click(start_billing);
            forceWait(1000);
            sendKeys(input_document_code,Fo);
            forceWait(1000);

            click(search);
            forceWait(1000);

            click(start_billing_1);
            forceWait(1000);
    //        isVisibility(By.xpath("//*[contains(text(),'所选的工厂订单状态必须为“发单中”')]"));

            click(start_billing);
            forceWait(1000);

            click(Confirm_billing);
            forceWait(1000);

            sendKeys(input_document_code,Fo);
            forceWait(1000);

            click(search);
            forceWait(1000);

            click(finish_billing);
            forceWait(3000);



        }


        /*
        *用于断言发单接单是否成功
        * @return boolean
        */

        public  boolean isSucceed() {return  isElementExist(Succeed_billing);}

        /*
         *用于断言发单是否成功
         * @return boolean
         */

        public  boolean FailBilling() {return  isElementExist(Fail_billing);}

        /*
         *用于断言接单是否成功
         * @return boolean
         */


        public  boolean FailOrder() {return  isElementExist(Fail_order);}







    }
}