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:org.alfresco.po.share.search.GalleryViewPopupPage.java

License:Open Source License

/**
 * Select close button.//  w  ww .  j  a  v  a2  s .c om
 * 
 * @return {@link FacetedSearchPage} page response
 */
public HtmlPage selectClose() {
    closeButton = driver.findElement(GALLERY_VIEW_CLOSE_BUTTON);
    Actions a = new Actions(driver);
    a.moveToElement(closeButton);
    a.click();
    a.perform();
    return factoryPage.instantiatePage(driver, FacetedSearchPage.class);
}

From source file:org.alfresco.po.share.search.PreViewPopUpPage.java

License:Open Source License

/**
 * Select close button.// w w  w.  ja va2 s.  c  o m
 * 
 * @return {@link FacetedSearchPage} page response
 */
public HtmlPage selectClose() {
    closeButton = driver.findElement(PREVIEW_CLOSE_BUTTON);
    Actions a = new Actions(driver);
    a.moveToElement(closeButton);
    a.click();
    a.perform();
    driver.findElements(PREVIEW_CLOSE_BUTTON);
    return factoryPage.instantiatePage(driver, FacetedSearchPage.class);
}

From source file:org.evilco.bot.powersweeper.game.ScreenGameInterface.java

License:Apache License

/**
 * {@inheritDoc}//from  www.j  a v a2  s  .com
 */
@Override
public void touchTile(TileLocation location) {
    // check chunk location
    if (this.chunkLocation == null || !this.chunkLocation.equals(location.getChunk().getLocation()))
        this.moveToChunk(location.getChunk().getLocation());

    // prepare action
    Actions actions = this.buildTileAction(location.getX(), location.getY());

    // click
    actions.click();

    // perform
    actions.build().perform();
}

From source file:org.jboss.arquillian.graphene.enricher.TestSeleniumResourceProvider.java

License:Open Source License

@Test
public void testActionsProviderLookup() {
    // having/*  w w w  . j av a 2 s.c  o m*/
    ActionsProvider provider = new ActionsProvider();
    Mouse mouse = mock(Mouse.class);
    Keyboard keyboard = mock(Keyboard.class);
    when(((HasInputDevices) driver).getMouse()).thenReturn(mouse);
    when(((HasInputDevices) driver).getKeyboard()).thenReturn(keyboard);
    // when
    Actions actions = (Actions) provider.lookup(null, null);
    actions.click().perform();
    // then
    verify(mouse).click(null);
    verifyNoMoreInteractions(mouse, keyboard);
}

From source file:org.kuali.rice.krad.demo.uif.library.controls.LibraryControlCheckboxDefaultAft.java

License:Educational Community License

protected void actionSendKeysArrowDown(String id) {
    Actions actions = new Actions(driver);
    actions.moveToElement(driver.findElement(By.id(id)));
    actions.click();
    actions.sendKeys(Keys.ARROW_DOWN);// www  .  j a  v a 2  s  .com
    actions.build().perform();
}

From source file:org.safs.selenium.webdriver.DCDriverCommand.java

License:Open Source License

private void setFocus() {
    String debugmsg = StringUtils.debugmsg(false);

    if (params.size() < 2) {
        issueParameterCountFailure();/*from   ww  w  . j a v  a2s.c  o  m*/
        return;
    }

    Iterator<?> iterator = params.iterator();
    String window = (String) iterator.next();
    String component = (String) iterator.next();
    IndependantLog.debug(debugmsg + " Setting focus to " + window + ":" + component);
    testRecordData.setWindowName(window);
    testRecordData.setCompName(component);

    boolean focused = false;
    boolean isWindow = window.equalsIgnoreCase(component);
    String winCompString = isWindow ? window : window + ":" + component;

    //wait for window and component object
    try {
        WebDriver webdriver = WDLibrary.getWebDriver();
        //wait for window and component object
        long timeout = isWindow ? getSecsWaitForWindow() : getSecsWaitForComponent();
        int status = wdgu.waitForObject(testRecordData.getAppMapName(), window, component, timeout);
        if (status == 0) {
            //TODO focus the window, How to???
            focusWindow(webdriver);
            if (!isWindow) {
                //focus the component
                WebElement element = WDLibrary.getObject(testRecordData.getCompGuiId());
                Actions focusAction = new Actions(webdriver).moveToElement(element);
                if ("EditBox".equalsIgnoreCase(WebDriverGUIUtilities.getCompType(element)))
                    focusAction = focusAction.click();
                focusAction.perform();
            }
            focused = true;
        } else {
            IndependantLog.error(debugmsg + " cannot find " + winCompString);
        }
    } catch (Exception e) {
        IndependantLog.error(
                debugmsg + " cannot set focus to " + winCompString + " due to " + StringUtils.debugmsg(e));
    }

    if (focused) {
        testRecordData.setStatusCode(StatusCodes.NO_SCRIPT_FAILURE);
        String msg = genericText.convert(TXT_SUCCESS_2,
                winCompString + " " + testRecordData.getCommand() + " successful.", winCompString,
                testRecordData.getCommand());
        log.logMessage(testRecordData.getFac(), msg, GENERIC_MESSAGE);
    } else {
        issueErrorPerformingAction(FAILStrings.convert(FAILStrings.SOMETHING_NOT_FOUND,
                winCompString + " was not focused.", winCompString));
    }
}

From source file:org.safs.selenium.webdriver.lib.WDLibrary.java

License:Open Source License

/**
 * Click the WebElement at a certain coordination with a special key pressed.<br>
 * Firstly it will try to get webelement's location and use Robot to click. At the same<br>
 * time, it will listen to a 'javascript mouse down' event to find out if the click really<br>
 * happened; If not, it will try to use Selenium's API to do the work.<br>
 * If the click point is outside of the boundary of the WebElement, which means we are going<br>
 * to click on the sibling component. At this situation, our click-listener will never receive<br>
 * the click event, we will turn off the click-listener.<br>
 *
 * @param clickable    WebElement, the WebElement to click on
 * @param offset      Point, the coordination relative to this WebElement to click at.<br>
 *                         if the offset is null, then click at the center.
 * @param specialKey   Keys, the special key to press during the click
 * @param mouseButtonNumber int, the mouse-button-number representing right, middle, or left button.
 *                          it can be {@link #MOUSE_BUTTON_LEFT} or {@link #MOUSE_BUTTON_RIGHT}.<br>
 *                          {@link #MOUSE_BUTTON_MIDDLE} NOT supported yet.
 * @param optional String[], the optional parameters
 * <ul>/*from w  ww.j  a v a 2  s .  c  o  m*/
 * <li> optional[0] autoscroll boolean, if the component will be scrolled into view automatically before clicking.
 *                                      if not provided, the default value is true.
 * </ul>
 * @throws SeleniumPlusException
 */
public static void click(WebElement clickable, Point offset, Keys specialKey, int mouseButtonNumber,
        String... optional) throws SeleniumPlusException {
    String debugmsg = StringUtils.debugmsg(WDLibrary.class, "click");

    checkBeforeOperation(clickable, true);
    WebDriver wd = WDLibrary.getWebDriver();
    RemoteDriver rd = (wd instanceof RemoteDriver) ? (RemoteDriver) wd : null;
    boolean autoscroll = parseAutoScroll(optional);

    if (autoscroll) {
        try {
            new Actions(wd).moveToElement(clickable).perform();
        } catch (Throwable t) {
            IndependantLog
                    .error(debugmsg + "Ignoring Selenium Robot Click 'moveToElement' action failure caused by "
                            + t.getClass().getName());
        }
    }

    MouseEvent event = null;
    DocumentClickCapture listener = new DocumentClickCapture(true, clickable);
    checkOffset(clickable, offset, listener);

    try {
        //2. Perform the click action by Robot
        Point location = getScreenLocation(clickable);
        if (offset != null)
            location.translate(offset.x, offset.y);
        else {
            Dimension d = clickable.getSize();
            location.translate(d.width / 2, d.height / 2);
        }
        listener.addListeners(false);
        RBT.click(rd, location, specialKey, mouseButtonNumber, 1);
        listener.startListening();

        //3. Wait for the 'click' event, check if the 'mousedown' event really happened.
        // CANAGL -- FIREFOX PROBLEM: A link that takes you to a new page (like the Google SignIn link) will
        // trigger the default action and apparently will NOT allow us to detect the Click occurred.
        // So this WILL generate a waitForClick InterruptedException (Timeout)
        event = listener.waitForClick(timeoutWaitRobotClick);
        if (event == null) {
            IndependantLog.resumeLogging();
            IndependantLog
                    .warn(debugmsg + " Robot may fail to perform click. Click screen location is " + location);
            throw new SeleniumPlusException("The Robot click action didn't happen.");
        } else {
            IndependantLog.resumeLogging();
            IndependantLog.debug(debugmsg + "Robot click successful.");
        }
    } catch (Throwable thr) {
        IndependantLog.resumeLogging();
        IndependantLog.warn(debugmsg + "Met Exception " + StringUtils.debugmsg(thr));

        // let the failed listeners exit.
        try {
            Thread.sleep(DocumentClickCapture.LISTENER_LOOP_DELAY + DocumentClickCapture.delayWaitReady);
        } catch (Exception x) {
            IndependantLog.debug(debugmsg + StringUtils.debugmsg(x));
        }

        try {
            //2. Perform the click action by Selenium
            IndependantLog.debug(debugmsg + " Try selenium API to click.");
            //Create a combined actions according to the parameters
            Actions actions = new Actions(getWebDriver());

            if (autoscroll) {
                if (offset != null)
                    actions.moveToElement(clickable, offset.x, offset.y);
                else
                    actions.moveToElement(clickable);
            }

            if (specialKey != null)
                actions.keyDown(specialKey);
            if (isRightMouseButton(mouseButtonNumber))
                actions.contextClick();
            else if (isLeftMouseButton(mouseButtonNumber))
                actions.click();
            else if (isMiddleMouseButton(mouseButtonNumber)) {
                throw new SeleniumPlusException("Click 'mouse middle button' has not been supported yet.");
            } else {
                throw new SeleniumPlusException(
                        "Mouse button number '" + mouseButtonNumber + "' cannot be recognized.");
            }
            if (specialKey != null)
                actions.keyUp(specialKey);

            IndependantLog.debug(
                    debugmsg + "click with key '" + specialKey + "', mousebutton='" + mouseButtonNumber + "'");

            //Perform the actions
            listener.addListeners(false);
            try {
                //if the Robot click worked, but was not detected. If we clicked a link, original page has
                //disappeared, so the link doesn't exist neither, the WebElement is stale. WebDriver will
                //not throw StaleElementReferenceException until the 'implicit timeout' is reached.
                //But we don't want to waste that time, so just set 'implicit timeout' to 0 and don't wait.
                WDTimeOut.setImplicitlyWait(0, TimeUnit.SECONDS);
                actions.build().perform();
                listener.startListening();

                // Dharmesh: Not report waitForClick failure due to listener event not capture 
                // if click coordination out of component size or background. 
                // It is hard to find sibling component.
                try {
                    event = listener.waitForClick(timeoutWaitClick);
                } catch (Throwable the) {
                    IndependantLog.debug(debugmsg + " waitForClick failed but not reported");
                }
                ;

                /*if(event != null)
                   IndependantLog.debug(debugmsg+"click has been performed.");
                else{
                   throw new SeleniumPlusException("Selenium Action.click failed to return the MouseEvent.");
                }*/

            } catch (StaleElementReferenceException x) {
                listener.stopListening(); // chrome is NOT stopping!
                // the click probably was successful because the elements have changed!
                IndependantLog.debug(debugmsg
                        + "StaleElementException (not found) suggests the click has been performed successfully.");
            } finally {
                IndependantLog.debug(
                        debugmsg + "selenium API click finally stopping listener and resetting timeouts.");
                listener.stopListening(); // chrome is NOT stopping!
                WDTimeOut.resetImplicitlyWait(Processor.getSecsWaitForComponent(), TimeUnit.SECONDS);
            }
        } catch (Throwable th) {
            listener.stopListening(); // chrome is NOT stopping!
            if (enableClickListenerFailures) {
                IndependantLog.error(debugmsg, th);
                throw new SeleniumPlusException("click action failed: " + StringUtils.debugmsg(th));
            } else {
                IndependantLog.debug(debugmsg + "ignoring selenium API click failure caused by "
                        + th.getClass().getName() + ", " + th.getMessage());
            }
        }
    } finally {
        IndependantLog.debug(debugmsg + "FINALLY stopping any ongoing listener, if any.");
        listener.stopListening(); // chrome is NOT stopping!
    }
}

From source file:org.safs.selenium.webdriver.lib.WDLibrary.java

License:Open Source License

/**
 * Click a component with an offset. This API will not verify that the click does happen.<br>
 * If you want to make sure of that, please call {@link #click(WebElement, Point)} instead.<br>
 * <br>//ww  w  .ja v a  2 s. com
 * Sometimes we want to click without verification, for example, to show an Alert.<br> 
 * With presence of Alert, any call to Selenium API will throw out UnhandledAlertException<br>
 * and close the Alert automatically. Our API {@link #click(WebElement, Point)} will call<br>
 * Selenium API for verification, so it is unable to open the Alert successfully.<br>  
 * 
 * @param component WebElement, the component to click
 * @param offset Point, the offset (relative to component) to click at
 * @param optional String[], the optional parameters
 * <ul>
 * <li> optional[0] autoscroll boolean, if the component will be scrolled into view automatically before clicking.
 *                                      if not provided, the default value is true.
 * </ul>
 * @return boolean true if succeed.
 * @see #click(WebElement, Point)
 */
public static boolean clickUnverified(WebElement component, Point offset, String... optional) {
    String debugmsg = StringUtils.debugmsg(false);

    try {
        IndependantLog.debug(debugmsg + " click with parameter componet:" + component + ", offset:" + offset);
        //Create a combined actions according to the parameters
        Actions actions = new Actions(getWebDriver());

        boolean autoscroll = parseAutoScroll(optional);
        if (autoscroll) {
            if (offset != null)
                actions.moveToElement(component, offset.x, offset.y);
            else
                actions.moveToElement(component);
        }
        IndependantLog.debug(debugmsg + " Try Selenium API to click.");
        actions.click().perform();

        return true;
    } catch (Exception e) {
        IndependantLog.warn(
                debugmsg + " Failed with Selenium API, met " + StringUtils.debugmsg(e) + ". Try Robot click.");

        try {
            Point p = WDLibrary.getScreenLocation(component);

            if (offset != null)
                p.translate(offset.x, offset.y);
            else
                p.translate(component.getSize().width / 2, component.getSize().height / 2);

            RBT.click(p, null, WDLibrary.MOUSE_BUTTON_LEFT, 1);

            return true;
        } catch (Exception e1) {
            IndependantLog.error(debugmsg + " Failed with Robot click!");
        }
        return false;
    }
}

From source file:org.sonarqube.qa.util.pageobjects.measures.MeasuresPage.java

License:Open Source License

public MeasuresPage backShortcut() {
    SelenideElement panel = Selenide.$(".layout-page-header-panel");

    // panel.sendKeys(Keys.LEFT) does not work correctly on Chrome
    // The workaround is to use Actions
    // https://bugs.chromium.org/p/chromedriver/issues/detail?id=35
    Actions actions = new Actions(WebDriverRunner.getWebDriver());
    actions.moveToElement(panel);/*from   w w w . ja va2s . c  o m*/
    actions.click();
    actions.sendKeys(Keys.LEFT);
    actions.build().perform();
    return this;
}

From source file:org.zanata.page.AbstractPage.java

License:Open Source License

/**
 * Enter text into an element./*w w  w. j a va 2s  .c  o m*/
 *
 * Waits for notifications to be dismissed and element to be ready and visible before entering
 * the text.
 * If no checking is performed, the resulting screenshot may not be accurate.
 * @param element element to pass text to
 * @param text text to be entered
 * @param clear clear the element's text before entering new text
 * @param inject use sendKeys rather than the Actions chain (direct injection)
 * @param check check the 'value' attribute for success, and accurate screenshot delay
 */
public void enterText(final WebElement element, final String text, boolean clear, boolean inject,
        final boolean check) {
    removeNotifications();
    waitForNotificationsGone();
    scrollIntoView(element);
    triggerScreenshot("_pretext");
    waitForAMoment().withMessage("editable: " + element.toString())
            .until(ExpectedConditions.elementToBeClickable(element));
    if (inject) {
        if (clear) {
            element.clear();
        }
        element.sendKeys(text);
    } else {
        Actions enterTextAction = new Actions(getDriver()).moveToElement(element);
        enterTextAction = enterTextAction.click();
        // Fields can 'blur' on click
        waitForPageSilence();
        if (clear) {
            enterTextAction = enterTextAction.sendKeys(Keys.chord(Keys.CONTROL, "a")).sendKeys(Keys.DELETE);
            // Fields can 'blur' on clear
            waitForPageSilence();
        }
        enterTextAction.sendKeys(text).perform();
    }
    if (check) {
        waitForAMoment().withMessage("Text equal to entered").until((Predicate<WebDriver>) webDriver -> {
            String foundText = element.getAttribute("value");
            if (!text.equals(foundText)) {
                log.info("Found: {}", foundText);
                triggerScreenshot("_textWaiting");
                return false;
            }
            return true;
        });
    } else {
        log.info("Not checking text entered");
    }
    triggerScreenshot("_text");
}