List of usage examples for org.openqa.selenium.interactions Actions click
public Actions click()
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"); }