Example usage for org.openqa.selenium.interactions Actions click

List of usage examples for org.openqa.selenium.interactions Actions click

Introduction

In this page you can find the example usage for org.openqa.selenium.interactions Actions click.

Prototype

public Actions click() 

Source Link

Document

Clicks at the current mouse location.

Usage

From source file:com.pentaho.ctools.cdf.CommentComponent.java

License:Apache License

/**
 * ############################### Test Case 5 ###############################
 *
 * Test Case Name://from w w w  .j  a v a2  s.com
 *    Display Page
 * Description:
 *    We pretend validate to check if a comment is removed.
 * Steps:
 *    1. Add a comment
 *    2. Remove added comment
 */
@Test
public void tc5_RemoveCoomment_CommentRemoved() {
    this.log.info("tc5_RemoveCoomment_CommentRemoved");
    this.tcRemoveComment = true;
    /*
     * Guarantee no comments displayed
     */
    cleanAllComments();

    String commentText = "Some comment!";
    String noComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.comment"));
    assertEquals("No Comments to show!", noComments);
    String addComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.addComment"));
    assertEquals("Add Comment", addComments);

    /*
     * ## Step 1
     */
    this.elemHelper.ClickJS(driver, By.cssSelector("div.addComment"));
    //Insert the text
    this.elemHelper.FindElement(driver, By.cssSelector("textarea.addCommentText")).sendKeys(commentText);
    this.elemHelper.ClickJS(driver, By.cssSelector("div.saveComment"));
    //wait for the page rendered
    wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("div.navigateRefresh")));
    //Check if the comment was added
    String commentAdded = this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='sampleObject']/div/div/div[1]/div[2]/div"));
    assertEquals(commentAdded, commentText);

    /*
     * ## Step 2
     */
    Actions acts = new Actions(driver);
    acts.moveToElement(this.elemHelper.FindElement(driver,
            By.xpath("//div[@id='sampleObject']/div/div/div[1]/div[2]/div")));
    acts.build().perform();
    acts.perform();
    acts.moveToElement(this.elemHelper.FindElement(driver, By.cssSelector("div.archive")));
    acts.click();
    acts.perform();
    //Check we don't have more comments
    noComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.comment"));
    assertEquals("No Comments to show!", noComments);
    addComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.addComment"));
    assertEquals("Add Comment", addComments);
    String refreshComments = this.elemHelper.WaitForElementPresentGetText(driver,
            By.cssSelector("div.navigateRefresh"));
    assertEquals("Refresh", refreshComments);
}

From source file:com.pentaho.ctools.cdf.CommentComponent.java

License:Apache License

/**
 * This method shall clean all existence comments.
 *//* w  w  w.  ja  v a 2s  .c  om*/
private void cleanAllComments() {
    this.log.info("Remove comments");
    ElementHelper nElemHelper = new ElementHelper();

    driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

    List<WebElement> listEraseComments = driver.findElements(By.cssSelector("div.archive"));
    int nIteractions = listEraseComments.size();
    this.log.info("Number elements to remove: " + nIteractions);
    if (nIteractions > 0) {
        this.log.debug("We have comments to remove");
        for (int i = 1; i <= nIteractions; i++) {
            Actions acts = new Actions(driver);
            acts.moveToElement(nElemHelper.FindElement(driver,
                    By.xpath("//div[@id='sampleObject']/div/div/div[1]/div[2]/div")));
            acts.perform();
            acts.moveToElement(nElemHelper.FindElement(driver, By.cssSelector("div.archive")));
            acts.click();
            acts.perform();
            this.log.debug("One comment removed.");
        }
    }
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

From source file:com.pentaho.ctools.cdf.require.CommentComponent.java

License:Apache License

/**
 * ############################### Test Case 5 ###############################
 *
 * Test Case Name://from   w  w w.j av a 2 s.co  m
 *    Display Page
 * Description:
 *    We pretend validate to check if a comment is removed.
 * Steps:
 *    1. Add a comment
 *    2. Remove added comment
 */
@Test
public void tc5_RemoveComment_CommentRemoved() {
    this.log.info("tc5_RemoveComment_CommentRemoved");
    this.tcRemoveComment = true;
    /*
     * Guarantee no comments displayed
     */
    cleanAllComments();

    String commentText = "Some comment!";
    String noComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.comment"));
    assertEquals("No Comments to show!", noComments);
    String addComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.addComment"));
    assertEquals("Add Comment", addComments);

    /*
     * ## Step 1
     */
    this.elemHelper.ClickJS(driver, By.cssSelector("div.addComment"));
    //Insert the text
    this.elemHelper.FindElement(driver, By.cssSelector("textarea.addCommentText")).sendKeys(commentText);
    this.elemHelper.ClickJS(driver, By.cssSelector("div.saveComment"));
    //wait for the page rendered
    this.elemHelper.WaitForElementPresence(driver, By.cssSelector("div.navigateRefresh"));
    //Check if the comment was added
    String commentAdded = this.elemHelper.WaitForElementPresentGetText(driver,
            By.xpath("//div[@id='sampleObject']/div/div/div[1]/div[2]/div"));
    assertEquals(commentAdded, commentText);

    /*
     * ## Step 2
     */
    Actions acts = new Actions(driver);
    acts.moveToElement(this.elemHelper.FindElement(driver,
            By.xpath("//div[@id='sampleObject']/div/div/div[1]/div[2]/div")));
    acts.build().perform();
    acts.perform();
    acts.moveToElement(this.elemHelper.FindElement(driver, By.cssSelector("div.archive")));
    acts.click();
    acts.perform();
    //Check we don't have more comments
    noComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.comment"));
    assertEquals("No Comments to show!", noComments);
    addComments = this.elemHelper.WaitForElementPresentGetText(driver, By.cssSelector("div.addComment"));
    assertEquals("Add Comment", addComments);
    String refreshComments = this.elemHelper.WaitForElementPresentGetText(driver,
            By.cssSelector("div.navigateRefresh"));
    assertEquals("Refresh", refreshComments);
}

From source file:com.pentaho.ctools.cdf.require.CommentComponent.java

License:Apache License

/**
 * This method shall clean all existence comments.
 *//*from   w  w  w . java2s  .c  o m*/
private void cleanAllComments() {
    this.log.info("Remove comments");

    ElementHelper elemHelper = new ElementHelper();

    driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

    List<WebElement> listEraseComments = driver.findElements(By.cssSelector("div.archive"));
    int nIteractions = listEraseComments.size();
    this.log.info("Number elements to remove: " + nIteractions);
    if (nIteractions > 0) {
        this.log.debug("We have comments to remove");
        for (int i = 1; i <= nIteractions; i++) {
            Actions acts = new Actions(driver);
            acts.moveToElement(elemHelper.FindElement(driver,
                    By.xpath("//div[@id='sampleObject']/div/div/div/div[2]/div[2]")));
            acts.perform();
            acts.moveToElement(elemHelper.FindElement(driver,
                    By.xpath("//div[@id='sampleObject']/div/div/div/div[2]/div[2]/div")));
            acts.click();
            acts.perform();
            this.log.debug("One comment removed.");
        }
    }
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}

From source file:com.vaadin.testbench.elements.MenuBarElement.java

License:Apache License

private void activateOrOpenSubmenu(WebElement item, boolean alwaysClick) {

    if (lastItemLocationMovedTo == null || !isAnySubmenuVisible()) {
        item.click();// w  ww.j  a  va  2 s .co  m
        if (hasSubmenu(item)) {
            lastItemLocationMovedTo = item.getLocation();
        }
        return;
    }

    // Assumes mouse is still at position of last clicked element
    Actions action = new Actions(getDriver());
    action.moveToElement(item);
    action.build().perform();

    if (isLeaf(item) || isSelectedTopLevelItem(item)) {
        lastItemLocationMovedTo = null;
    } else {
        lastItemLocationMovedTo = item.getLocation();
    }

    if (alwaysClick || isLeaf(item) || !isAnySubmenuVisible()) {
        action = new Actions(getDriver());
        action.click();
        action.build().perform();
    }
}

From source file:com.vaadin.testbench.TestBenchElement.java

@Override
public void click(int x, int y, Keys... modifiers) {
    waitForVaadin();/* w w  w .  j  av  a  2 s. c  om*/
    Actions actions = new Actions(getCommandExecutor().getWrappedDriver());
    actions.moveToElement(actualElement, x, y);
    // Press any modifier keys
    for (Keys modifier : modifiers) {
        actions.keyDown(modifier);
    }
    actions.click();
    // Release any modifier keys
    for (Keys modifier : modifiers) {
        actions.keyUp(modifier);
    }
    actions.build().perform();
}

From source file:dk.dma.ais.abnormal.web.StatisticDataIT.java

License:Open Source License

private void clickOnACell() throws InterruptedException {
    zoomIntoHelsinore();//from  www . j  a v  a2 s  .  com
    waitForCellsToBeDisplayed();

    WebElement map = getMap();

    Actions actions = new Actions(browser);
    actions.moveToElement(map, map.getSize().getWidth() / 2, map.getSize().getHeight() / 2);
    actions.click();
    actions.perform();

    // Cursor position is exactly in the center of the map
    browser.findElement(By.id("tab-map")).click();
    assertEquals("(5602'05.7\"N, 1238'59.7\"E)",
            browser.findElement(By.cssSelector("div#cursorpos.useroutput p")).getText());

    // Assert statistic data for correct cell displayed
    final String expectedCellInfo = "Cell id 6249302540 (5602'06.5\"N,1238'53.8\"E) - (5602'00\"N,1239'00.3\"E)";
    By actualCellInfoElement = By.cssSelector("div.cell-data-contents > h5");
    wait.until(ExpectedConditions.textToBePresentInElement(actualCellInfoElement, expectedCellInfo));
}

From source file:GlennsPack.GlennWebAPI.Bot2048.java

License:Open Source License

public Bot2048() {
    System.setProperty("webdriver.chrome.driver", "C:/Users/Glenn/Downloads/chromedriver/chromedriver.exe");
    WebDriver driver = new ChromeDriver();

    driver.manage().window().setSize(new Dimension(2000, 800));

    driver.get("http://annimon.github.io/16384/");

    //      try {
    //         Thread.sleep(2000);
    //      } catch (Exception e) {
    //         // FIXME: handle exception
    //      }// w w w . j  a  v a  2  s  .co m
    //      
    WebElement element = driver.findElement(By.xpath("/html/body/div"));
    //            ("/html/body/div/div[2]"));

    Actions actions = new Actions(driver);
    actions.moveToElement(element);
    actions.click();
    CharSequence[] array = { Keys.ARROW_DOWN, Keys.ARROW_LEFT, Keys.ARROW_RIGHT };
    for (int i = 0; i < 1000000; i++) {
        Random random = new Random();
        actions.sendKeys(array[random.nextInt(3)]);
        ;
        actions.sendKeys(Keys.ARROW_DOWN);
        actions.build().perform();
        try {
            //         Thread.sleep(1);
        } catch (Exception e) {
            // FIXME: handle exception
        }
    }
}

From source file:GlennsPack.GlennWebAPI.Keybr.java

License:Open Source License

public void runer(WebDriver driver) {

    driver.findElement(By.className("Tour-close")).click();

    System.out.println("CLICKED");
    ////from  w ww.j a va 2 s .c o  m
    try {

        driver.findElement(By.id("Practice-textInput")).click();
        Thread.sleep(1000);
        WebElement element = driver.findElement(By.id("Practice"));

        Actions actions = new Actions(driver);
        actions.moveToElement(element);
        actions.click();

        String abc = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz[]-.,?!()\"'";

        Robot robot = new Robot();

        for (int i1 = 0; i1 < 30; i1++) {

            try {
                for (int i = 0; i < 200; i++) {

                    String currLetter = driver
                            .findElement(By.cssSelector("span.TextInput-item:nth-child(" + (i + 1) + ")"))
                            .getText();
                    System.out.println(currLetter);

                    if (!abc.contains(currLetter)) {
                        currLetter = " ";
                        System.out.println("SPACE");
                        i++;
                    }

                    Thread.sleep(25);

                    robot.keyPress(KeyEvent.getExtendedKeyCodeForChar(currLetter.charAt(0)));
                    actions.build().perform();
                    robot.keyRelease(KeyEvent.getExtendedKeyCodeForChar(currLetter.charAt(0)));
                }
            } catch (Exception e) {
                System.out.println("Another row done");
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

}

From source file:ObjectRepository.EquipDown.java

public void TestScenario() throws InterruptedException, IOException {

    System.out.println("Starting Execution on location " + Constant.Location + " to Down Equipment");

    //driver.manage().window().setPosition(new Point(1900, 0)); 
    driver.manage().window().maximize();
    //driver.manage().window().setPosition(new Point(1900, 0)); 

    driver.findElement(By.xpath("//*[@id='nav']/div[2]/div[1]/div[3]/div[2]")).click(); //click on Personnel menu
    driver.findElement(By.xpath("//*[@id='nav']/div[2]/div[1]/div[4]/div[2]")).click(); //click on tasks menu

    //driver.manage().window().setPosition(new Point(-1900, 0));
    //           List<String> equipmentCategory = new ArrayList<String>();
    //           equipmentCategory.add("RearLoaders");
    //           equipmentCategory.add("DualBins");
    //           equipmentCategory.add("MechanicalBrooms");
    //           equipmentCategory.add("RoRos");
    //           equipmentCategory.add("EzPacks");
    //           equipmentCategory.add("Miscellaneous");
    //           equipmentCategory.add("Snow");

    String[] equipmentCategory = new String[8];
    equipmentCategory[0] = ("RearLoaders");
    equipmentCategory[1] = ("DualBins");
    equipmentCategory[2] = ("MechanicalBrooms");
    equipmentCategory[3] = ("AlleyTrucks");
    equipmentCategory[4] = ("RoRos");
    equipmentCategory[5] = ("EzPacks");
    equipmentCategory[6] = ("Miscellaneous");
    equipmentCategory[7] = ("Snow");

    //opening existing excel file call Data
    FileInputStream file = new FileInputStream(
            "C:\\Users\\skashem\\Desktop\\Excel_Selenium_Framework\\431_Down_Equipment.xlsx");

    @SuppressWarnings("resource")
    XSSFWorkbook workbook = new XSSFWorkbook(file);
    XSSFSheet sheet = workbook.getSheetAt(0);
    XSSFRow row = null;/*from   w  w  w.  j  ava2  s  .c om*/
    int n = 1;
    SoftAssert softassert = new SoftAssert();

    for (int itrCategory = 0; itrCategory < equipmentCategory.length; itrCategory++) {
        //equipmentCategory.get(itrCategory)               
        //this.j = j;      
        for (int j = 0; j <= Constant.equipIteration - 1; j++) //number of equipment to be down
        //this.j = j;

        {

            //Thread.sleep(300);

            if (driver
                    .findElement(By.xpath("//*[@id='equip" + equipmentCategory[itrCategory] + "']/div[2]/div"))
                    .isDisplayed())

            {
                String equipInnertext = driver
                        .findElement(
                                By.xpath("//*[@id='equip" + equipmentCategory[itrCategory] + "']/div[2]/div"))
                        .getText();
                //this.variableName can be used if two elements have similar functioanlity and you want to split it and call the element from a specific category. That variable can be used outside of if statement and loop statement

                //String equipInnertext =  driver.findElement(By.xpath("//*[@id='equipRearLoaders']/div[2]/div")).getText();
                if (equipInnertext.length() > 3) {
                    String[] Innertext = equipInnertext.split("\n");

                    int i = Constant.GetAllEquipmentCount(Innertext);

                    //@SuppressWarnings("unchecked")
                    List<String> equpNames = Constant.GetAllEquipmentNames(Innertext);

                    // String random = (equpNames[new Random().nextInt(equpNames.length)]);
                    Random rn = new Random();
                    int randomEqup = rn.nextInt(i);

                    row = sheet.createRow(n);

                    System.out.println("number of total equipment in " + equipmentCategory[itrCategory]
                            + " Before Down is " + i);

                    row.createCell(0).setCellValue(Constant.Location); //location
                    sheet.autoSizeColumn(0);
                    row.createCell(1).setCellValue(Constant.GetDateAndformat(0)); //date
                    sheet.autoSizeColumn(1);

                    String strEquipCount = driver.findElement(By.xpath(
                            "//*[@id='equip" + equipmentCategory[itrCategory] + "']/div[1]/h4/a/span[2]"))
                            .getText();
                    String intEquipCount = Constant.EquipmentCount(strEquipCount);
                    int intEquipCountBeforeDown = Double.valueOf(intEquipCount).intValue();

                    System.out.println("Equipment to down is " + equpNames.get(randomEqup));
                    row.createCell(2).setCellValue(equpNames.get(randomEqup)); //Equipment name from ops-board
                    sheet.autoSizeColumn(2);
                    row.createCell(3).setCellValue(equipmentCategory[itrCategory]); //Equipment category name
                    sheet.autoSizeColumn(3);

                    if (intEquipCountBeforeDown == i) {
                        row.createCell(4).setCellValue(i); //number of equipment within a category
                        Reporter.log(
                                "Passed-Correct number of Equipment displayed on OPS Before down for category "
                                        + equipmentCategory[itrCategory] + " is " + i + " for iteration "
                                        + (j + 1)); //number of equipment within a category);
                        sheet.autoSizeColumn(4);
                    } else {
                        row.createCell(4).setCellValue("Ops-Board category displays Count as: "
                                + intEquipCountBeforeDown + " but actual equipment count is " + i); //number of equipment within a category 
                        //Assert.fail("Failed- InCorrect number of Equipment displayed on OPS after down for category " + equipmentCategory.get(itrCategory) + " is " + i + " for iteration " + (j + 1));
                        Reporter.log(
                                "Failed- InCorrect number of Equipment displayed on OPS before down for category "
                                        + equipmentCategory[itrCategory] + " is " + intEquipCountBeforeDown
                                        + " for iteration " + (j + 1));
                        softassert.assertEquals("Equipment count before down should be " + i,
                                " But equipment count before down is " + intEquipCountBeforeDown);
                        sheet.autoSizeColumn(4);
                        //driver.close();
                    }

                    String downEquipInnertext = driver.findElement(By.xpath("//*[@id='equipDown']")).getText();
                    String[] downInnertext = downEquipInnertext.split("\n");

                    int downItr = Constant.GetAllEquipmentCount(downInnertext);

                    String strDownCount = driver
                            .findElement(By.xpath("//*[@id='allUnavailableEquipment']/div[3]/a/div/span[2]"))
                            .getText();
                    String intDownCount = Constant.EquipmentCount(strDownCount);
                    int intDownCountBeforeDown = Double.valueOf(intDownCount).intValue();

                    if (intDownCountBeforeDown == downItr) {
                        row.createCell(5).setCellValue(downItr); //number of equipment within a down category
                        Reporter.log(
                                "Passed-Correct number of Equipment displayed on OPS Before down for Down Category is "
                                        + downItr + " for iteration " + (j + 1)); //number of equipment within Down category);
                        System.out.println(
                                "Passed-Correct number of Equipment displayed on OPS Before down for Down Category is "
                                        + downItr + " for iteration " + (j + 1)); //number of equipment within Down category);

                        sheet.autoSizeColumn(5);
                    } else {
                        System.out.println(
                                "Failed-Incorrect number of Equipment displayed on OPS Before down for Down Category is "
                                        + intDownCountBeforeDown + " for iteration " + (j + 1));
                        row.createCell(5).setCellValue("Ops-Board category displays Count as: "
                                + intDownCountBeforeDown + " but actual equipment count is " + downItr); //number of equipment within Down category 
                        Reporter.log(
                                "Failed- InCorrect number of Equipment displayed on OPS before down for Down category is "
                                        + intDownCountBeforeDown + " for iteration " + (j + 1));
                        softassert.assertEquals(
                                "Equipment count before down in down category should be " + downItr,
                                " But equipment count before down in Down category is "
                                        + intDownCountBeforeDown);
                        sheet.autoSizeColumn(5);
                        //driver.close();
                    }

                    driver.findElement(
                            By.xpath("//span[contains(@class,'piece-of-equipment') and contains(text(),'"
                                    + equpNames.get(randomEqup) + "')]"))
                            .click();

                    String equipDown = driver
                            .findElement(By.xpath("//*[@id='details']/div[1]/div/table/tbody/tr[1]/td[1]/h4"))
                            .getText();
                    row.createCell(6).setCellValue(equipDown); //Equipment condition before down

                    System.out.println("Equipment Condition is " + equipDown);

                    if (equipDown == "Down") {
                        //j--;
                        //continue;
                        row.createCell(6).setCellValue("Down"); //Equipment condition before down                                                
                        sheet.autoSizeColumn(6);
                    } else {

                        // Thread.sleep(350);

                        driver.findElement(
                                By.xpath("//*[@id='screen1Pane2']/div[2]/div[1]/div/div/span[3]/div/button[2]"))
                                .click(); //click on action drop down
                        if (driver
                                .findElement(By.xpath(
                                        "//*[@id='screen1Pane2']/div[2]/div[1]/div/div/span[3]/div/ul/li[5]"))
                                .isDisplayed()) //if down action button is displayed
                        {
                            driver.findElement(By.xpath(
                                    "//*[@id='screen1Pane2']/div[2]/div[1]/div/div/span[3]/div/ul/li[5]"))
                                    .click(); //clicking on Down action

                            Thread.sleep(1800);

                            String strEquipmentType = driver
                                    .findElement(By.xpath("//*[@id='modal']/div[2]/div[1]/div[1]")).getText(); //equipment type modal window
                            row.createCell(7).setCellValue(strEquipmentType); //Equipment Repair Location 
                            sheet.autoSizeColumn(7);
                            String strEquipmentOwner = driver
                                    .findElement(By.xpath("//*[@id='modal']/div[2]/div[1]/div[2]")).getText(); //equipment Owner modal window
                            row.createCell(8).setCellValue(strEquipmentOwner); //Equipment Repair Location 
                            sheet.autoSizeColumn(8);
                            String strEquipmentCurrentLocation = driver
                                    .findElement(By.xpath("//*[@id='modal']/div[2]/div[2]/div[1]")).getText(); //equipment Current Location modal window
                            row.createCell(9).setCellValue(strEquipmentCurrentLocation); //Equipment Repair Location modal window
                            sheet.autoSizeColumn(9);
                            String strEquipmentLicense = driver
                                    .findElement(By.xpath("//*[@id='modal']/div[2]/div[2]/div[2]")).getText(); //equipment License modal window
                            row.createCell(10).setCellValue(strEquipmentLicense); //Equipment Repair Location 
                            sheet.autoSizeColumn(10);

                            //click and enter a down code 1 from drop down
                            driver.findElement(By.xpath("//*[@id='s2id_downCode1']")).click();
                            String downCodesInnertext = driver
                                    .findElement(By.xpath("//div[@id='select2-drop']")).getText();
                            String[] arrayDownCodeInnertext = downCodesInnertext.split("\n");
                            List<String> downCodes = Constant.GetAllDropDowns(arrayDownCodeInnertext);
                            int j1 = Constant.GetAllDropDownCount(arrayDownCodeInnertext);
                            int randomDownCode = rn.nextInt(j1);
                            System.out.println(
                                    "Down code selected for down code 1 is " + downCodes.get(randomDownCode));
                            row.createCell(11).setCellValue(downCodes.get(randomDownCode)); //Equipment down code
                            sheet.autoSizeColumn(11);
                            List<WebElement> a = driver.findElements(By
                                    .xpath("//input[contains(@id,'s2id_autogen') and contains(@id,'search')]"));
                            Actions actions = new Actions(driver);
                            actions.moveToElement(a.get(0));
                            actions.click();
                            actions.sendKeys(downCodes.get(randomDownCode)).perform();
                            driver.findElement(By.xpath("//*[contains(@id,'select2-results')]/li[1]")).click();

                            //click and enter a Repair Location from drop down
                            driver.findElement(By.xpath("//*[@id='s2id_repairLocation1']")).click();
                            String repairLocationInnertext = driver
                                    .findElement(By.xpath("//div[@id='select2-drop']")).getText();
                            String[] arrayRepairLocation = repairLocationInnertext.split("\n");
                            List<String> repairLocation = Constant.GetAllDropDowns(arrayRepairLocation);
                            //System.out.println("Down code " + repairLocation.get(0));
                            int k = Constant.GetAllDropDownCount(arrayRepairLocation);
                            int randomRepairLocation = rn.nextInt(k);
                            System.out.println("Repair Location selected for down code 1 is "
                                    + repairLocation.get(randomRepairLocation));
                            row.createCell(12).setCellValue((repairLocation.get(randomRepairLocation))); //Equipment Repair Location 
                            sheet.autoSizeColumn(12);
                            actions.moveToElement(a.get(1));
                            actions.click();
                            actions.sendKeys(repairLocation.get(randomRepairLocation)).perform();
                            driver.findElement(By.xpath("//*[contains(@id,'select2-results')]/li[1]")).click();

                            //Enter Reporter
                            driver.findElement(
                                    By.xpath("//*[@id='modal']/div[2]/fieldset[1]/div[2]/div[1]/input"))
                                    .sendKeys("Reporter1");
                            row.createCell(13).setCellValue("Reporter1"); //Equipment Reporter 
                            sheet.autoSizeColumn(13);
                            //Thread.sleep(300);
                            //Enter Mechanic
                            driver.findElement(
                                    By.xpath("//*[@id='modal']/div[2]/fieldset[1]/div[2]/div[2]/input"))
                                    .sendKeys("Mechanic1");
                            row.createCell(14).setCellValue("Mechanic1"); //Equipment Mechanic
                            sheet.autoSizeColumn(14);
                            //Enter Remarks
                            driver.findElement(
                                    By.xpath("//*[@id='modal']/div[2]/fieldset[1]/div[2]/div[3]/input"))
                                    .sendKeys("Test");
                            //Click on Down Button 
                            driver.findElement(By.xpath("//*[@id='modal']/div[3]/button[2]")).click();

                            Thread.sleep(4000);

                            driver.findElement(By.xpath("//*[contains(@ng-click,'closeEquipmentDetailsPane')]"))
                                    .click();

                            //Thread.sleep(1200);                                                               

                        } // end of if down action button is displayed 

                    } // if equipment is down 

                    //Thread.sleep(500);   

                    driver.findElement(
                            By.xpath("//span[contains(@class,'piece-of-equipment') and contains(text(),'"
                                    + equpNames.get(randomEqup) + "')]"))
                            .click();
                    Thread.sleep(300);
                    String equipAfterDown = driver
                            .findElement(By.xpath("//*[@id='details']/div[1]/div/table/tbody/tr[1]/td[1]/h4"))
                            .getText();
                    row.createCell(17).setCellValue(equipAfterDown); //Equipment condition after down
                    driver.findElement(By.xpath("//*[contains(@ng-click,'closeEquipmentDetailsPane')]"))
                            .click();

                    driver.findElement(By.xpath("//*[@id='nav']/div[2]/div[1]/div[12]/div[2]")).click();

                    Thread.sleep(1000);

                    String strDownRecentActivity0 = driver
                            .findElement(
                                    By.xpath("//*[@id='board']/div[2]/div/div[2]/div[1]/div[1]/div[2]/span[1]"))
                            .getText();
                    String strDownRecentActivity1 = driver
                            .findElement(
                                    By.xpath("//*[@id='board']/div[2]/div/div[2]/div[1]/div[1]/div[2]/span[2]"))
                            .getText();
                    String strDownRecentActivity2 = driver
                            .findElement(
                                    By.xpath("//*[@id='board']/div[2]/div/div[2]/div[1]/div[1]/div[2]/span[3]"))
                            .getText();
                    String strDownRecentActivity3 = driver
                            .findElement(
                                    By.xpath("//*[@id='board']/div[2]/div/div[2]/div[1]/div[1]/div[2]/span[4]"))
                            .getText();
                    String strDownRecentActivity4 = driver
                            .findElement(
                                    By.xpath("//*[@id='board']/div[2]/div/div[2]/div[1]/div[1]/div[2]/span[6]"))
                            .getText();

                    String strDownActivity = strDownRecentActivity0 + " " + strDownRecentActivity1 + " "
                            + strDownRecentActivity2 + " " + strDownRecentActivity3 + " on "
                            + strDownRecentActivity4;
                    //System.out.println(strDownActivity);

                    if (strDownActivity
                            .matches("(?i).*Downed Equipment.*" + equpNames.get(randomEqup) + ".*")) {
                        System.out.println("Equipment displays in recent activity for iteration " + (j + 1)
                                + " after Down: " + strDownActivity);
                        row.createCell(18).setCellValue(strDownActivity); //Recent Activity after down
                        sheet.autoSizeColumn(18);
                    } else {

                        System.out.println("no records for Equipment appears in recent acitivity for iteration "
                                + (j + 1) + " after Down");
                        row.createCell(18).setCellValue(
                                "No records for Equipment appears in recent acitivity for iteration "); //Recent Activity after down
                        sheet.autoSizeColumn(18);
                    }

                    Thread.sleep(200);
                    driver.findElement(By.xpath("//*[@id='nav']/div[2]/div[1]/div[12]/div[2]")).click();

                    String equipInnertextAfter = driver
                            .findElement(By
                                    .xpath("//*[@id='equip" + equipmentCategory[itrCategory] + "']/div[2]/div"))
                            .getText();
                    String[] InnertextAfter = equipInnertextAfter.split("\n");
                    int iAfter = Constant.GetAllEquipmentCount(InnertextAfter);
                    System.out.println("number of total equipment in " + equipmentCategory[itrCategory]
                            + " After Down is " + iAfter);

                    String strEquipCountAfterDown = driver.findElement(By.xpath(
                            "//*[@id='equip" + equipmentCategory[itrCategory] + "']/div[1]/h4/a/span[2]"))
                            .getText();
                    String intEquipCountAfterDown = Constant.EquipmentCount(strEquipCountAfterDown);
                    int intEquipCountAfter = Double.valueOf(intEquipCountAfterDown).intValue();

                    if (intEquipCountAfter != iAfter) {
                        row.createCell(15).setCellValue("Ops-Board category displays Count as: "
                                + intEquipCountAfter + " but actual equipment count is " + iAfter); //number of equipment within a category 
                        sheet.autoSizeColumn(15);
                        //Assert.fail("Failed- InCorrect number of Equipment displayed on OPS after down for category " + equipmentCategory.get(itrCategory) + " is " + intEquipCountAfter + " for iteration " + (j + 1));
                        //driver.close();
                        // try
                        //   {
                        // Softassert.assertTrue(false);
                        softassert.assertEquals("Equipment count after down should be " + iAfter,
                                " But equipment count after down is " + intEquipCountAfter); //intEquipCountAfter
                        //  catch(AssertionError e)
                        //    {
                        Reporter.log(
                                "Failed- incorrect number of Equipment displayed on OPS after down for category "
                                        + equipmentCategory[itrCategory] + " is " + intEquipCountAfter
                                        + " for iteration " + (j + 1)); //number of equipment within a category;
                        //    }

                    } else {
                        row.createCell(15).setCellValue(iAfter); //number of equipment within a category 
                        Reporter.log(
                                "Passed- correct number of Equipment displayed on OPS after down for category "
                                        + equipmentCategory[itrCategory] + " is " + iAfter + " for iteration "
                                        + (j + 1)); //number of equipment within a category;
                        sheet.autoSizeColumn(15);

                    }

                    String downEquipInnertextAfter = driver.findElement(By.xpath("//*[@id='equipDown']"))
                            .getText();
                    String[] downInnertextAfter = downEquipInnertextAfter.split("\n");

                    int downItrAfter = Constant.GetAllEquipmentCount(downInnertextAfter);

                    String strDownCountAfter = driver
                            .findElement(By.xpath("//*[@id='allUnavailableEquipment']/div[3]/a/div/span[2]"))
                            .getText();
                    String intDownCountAfter = Constant.EquipmentCount(strDownCountAfter);
                    int intDownCountBeforeDownAfter = Double.valueOf(intDownCountAfter).intValue();

                    if (intDownCountBeforeDownAfter == downItrAfter) {
                        row.createCell(16).setCellValue(downItrAfter); //number of equipment within a down category
                        Reporter.log(
                                "Passed-Correct number of Equipment displayed on OPS After down for Down Category is "
                                        + downItrAfter + " for iteration " + (j + 1)); //number of equipment within Down category);
                        System.out.println(
                                "Passed-Correct number of Equipment displayed on OPS After down for Down Category is "
                                        + downItrAfter + " for iteration " + (j + 1)); //number of equipment within Down category);

                        sheet.autoSizeColumn(16);
                    } else {
                        System.out.println(
                                "Failed-Incorrect number of Equipment displayed on OPS After down for Down Category is "
                                        + intDownCountBeforeDownAfter + " for iteration " + (j + 1));
                        row.createCell(16).setCellValue(
                                "Ops-Board category displays Count as: " + intDownCountBeforeDownAfter
                                        + " but actual equipment count is " + downItrAfter); //number of equipment within Down category 
                        Reporter.log(
                                "Failed- InCorrect number of Equipment displayed on OPS After down for Down category is "
                                        + intDownCountBeforeDownAfter + " for iteration " + (j + 1));
                        softassert.assertEquals(
                                "Equipment count After down in down category should be " + downItrAfter,
                                " But equipment count After down in Down category is "
                                        + intDownCountBeforeDownAfter);
                        sheet.autoSizeColumn(16);
                        //driver.close();
                    }

                    Thread.sleep(500);

                    n = n + 1;
                } else {
                    break;
                } // end of equipment greater than 3 if
            } // end of is displayed 
        } // End of number of equipment per category loop   

    } // End of Category loop
    driver.close();
    file.close();

    //saving the file as different name
    FileOutputStream outFile = new FileOutputStream(
            "C:\\Users\\skashem\\Desktop\\Excel_Selenium_Framework\\431_Down_Equipment_" + Constant.Location
                    + "_" + Constant.GetDateAndformat(0) + ".xlsx");
    workbook.write(outFile);
    outFile.close();

}