@Override public void click() { String tagName = getTagName(); if (tagName != null && "OPTION".equals(tagName.toUpperCase())) { driver.resetPageIsLoading(); driver.executeAtom(AndroidAtoms.CLICK, this); driver.waitForPageToLoad(); } Point center = getCenterCoordinates(); long downTime = SystemClock.uptimeMillis(); final List<MotionEvent> events = Lists.newArrayList(); MotionEvent downEvent = MotionEvent.obtain( downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, center.x, center.y, 0); events.add(downEvent); MotionEvent upEvent = MotionEvent.obtain( downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, center.x, center.y, 0); events.add(upEvent); driver.resetPageIsLoading(); Activity current = ServerInstrumentation.getInstance().getCurrentActivity(); EventSender.sendMotion(events, webview, current); // If the page started loading we should wait // until the page is done loading. driver.waitForPageToLoad(); }
public void sendKeys(final CharSequence value) { if (value == null || value.length() == 0) { return; } // focus on the element this.click(); driver.waitUntilEditAreaHasFocus(); // Move the cursor to the end of the test input. // The trick is to set the value after the cursor driver.executeScript("arguments[0].focus();arguments[0].value=arguments[0].value;", this); EventSender.sendKeys(webview, value); }