Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2012-2013 eBay Software Foundation and selendroid committers.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
   * in compliance with the License. You may obtain a copy of the License at
   * 
   * http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software distributed under the License
  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
 package io.selendroid.server.model;
 
 import  io.selendroid.ServerInstrumentation;
 import  io.selendroid.server.webview.EventSender;
 
 import java.util.List;
 
 
 
 public class AndroidWebElement implements AndroidElement {
   private final String id;
   private WebView webview;
   private SelendroidWebDriver driver;
   private SearchContext elementContext = null;
   private Coordinates coordinates = null;
   private final static long SENDKEYS_TIMEOUT = 5000L;
   private final static long POLLING_INTERVAL = 50L;
 
 
   private class ElementSearchContext extends AbstractWebElementContext {
     public ElementSearchContext(KnownElements knownElementsWebView webview,
         SelendroidWebDriver driver) {
       super(knownElementswebviewdriver);
     }
 
     @Override
     protected AndroidElement lookupElement(String strategyString locator) {
       JSONObject result =
           (JSONObject.executeAtom(.strategylocator,
               AndroidWebElement.this);
       AndroidElement element = replyElement(result);
       if (element == null) {
         throw new NoSuchElementException("element was not found.");
       }
       return element;
     }
 
     @Override
     protected List<AndroidElementlookupElements(String strategyString locator) {
       JSONArray result =
           (JSONArray.executeAtom(.strategylocator,
               AndroidWebElement.this);
 
       List<AndroidElementelements = replyElements(result);
       if (elements == null || elements.isEmpty()) {
         throw new NoSuchElementException("no elements were found.");
       }
       return elements;
     }
   }
 
   public AndroidWebElement(String idWebView webview, SelendroidWebDriver driver,
       KnownElements knownElements) {
     this. = id;
     this. = webview;
     this. = driver;
     this. = new ElementSearchContext(knownElementswebviewdriver);
   }
 
   @Override
   public AndroidElement getParent() {
     throw new UnsupportedOperationException();
   }
 
   @Override
     throw new UnsupportedOperationException();
  }
    return by.findElement();
  }
    return by.findElements();
  }
  public void enterText(CharSequence... keysToSend) {
    StringBuilder sb = new StringBuilder();
    for (CharSequence keys : keysToSend) {
      sb.append(keys);
    }
    sendKeys(sb.toString());
  }
  public void sendKeys(final CharSequence value) {
    if (value == null || value.length() == 0) {
      return;
    }
    // focus on the element
    this.click();
    .waitUntilEditAreaHasFocus();
    // Move the cursor to the end of the test input.
    // The trick is to set the value after the cursor
    String originalText =
        (String.executeScript("arguments[0].focus();"
            + "arguments[0].value=arguments[0].value;return arguments[0].value"this);
    EventSender.sendKeys(value);
    // wait for keys to have been sent to the element
    long timeout = System.currentTimeMillis() + ;
    while (timeout < System.currentTimeMillis()) {
      String newValue = (String.executeScript("return arguments[0].value;");
      if (newValue.length() > originalText.length()) break;
      try {
        Thread.sleep();
      } catch (InterruptedException e) {
        // being kind to the system, if system is interrupting just break out.
        break;
      }
    }
  }
  public boolean isEnabled() {
    return (Boolean.executeAtom(.this);
  }
  public boolean isSelected() {
    return (Boolean.executeAtom(.this);
  }
  public String getText() {
    return (String.executeAtom(.this);
  }
  public String getTagName() {
    Object result = .executeScript("return arguments[0].tagName"this);
    if (result == null) {
      return null;
    }
    try {
      return new JSONObject((Stringresult).getString("value");
    } catch (JSONException e) {
      return null;
    }
  }
  public boolean isDisplayed() {
    return (Boolean.executeAtom(.this);
  }

  
Where on the page is the top left-hand corner of the rendered element? it's part of RenderedWebElement

Returns:
A point, containing the location of the top left-hand corner of the element
  public Point getLocation() {
    JSONObject result =
        (JSONObject.executeAtom(.this);
    try {
      return new Point(result.getInt("x"), result.getInt("y"));
    } catch (JSONException e) {
      throw new SelendroidException(e);
    }
  }

  

Returns:
a Point where x is the width, and y is the height.
  public Dimension getSize() {
    JSONObject dimension = (JSONObject.executeAtom(.this);
    try {
      return new Dimension(dimension.getInt("width"), dimension.getInt("height"));
    } catch (JSONException e) {
      throw new SelendroidException(e);
    }
  }
  private Point getCenterCoordinates() {
    if (!isDisplayed()) {
      final String msg = "This WebElement is not visisble and may not be clicked.";
      if (.... <= 18) {
        throw new ElementNotVisibleException(msg);
      } else {
        // just give it a try
        Log.w("SelendroidWebDriver"msg);
      }
    }
    .setEditAreaHasFocus(false);
    Point topLeft = getLocation();
    String sizeJs =
        "var __webdriver_w = 0;" + "var __webdriver_h = 0;"
            + "if (arguments[0].getClientRects && arguments[0].getClientRects()[0]) {"
            + "  __webdriver_w = arguments[0].getClientRects()[0].width;"
            + "  __webdriver_h = arguments[0].getClientRects()[0].height;" + " } else {"
            + "  __webdriver_w = arguments[0].offsetWidth;"
            + "  __webdriver_h = arguments[0].offsetHeight;"
            + "}; return __webdriver_w + ',' + __webdriver_h;";
    String[] result = null;
    try {
      JSONObject response = new JSONObject((String.executeScript(sizeJsthis));
      result = response.getString("value").split(",");
    } catch (JSONException e) {
      throw new SelendroidException(e);
    }
    return new Point(topLeft.x + Integer.parseInt(result[0]) / 2, topLeft.y
        + Integer.parseInt(result[1]) / 2);
  }
  public void click() {
    String tagName = getTagName();
    if (tagName != null && "OPTION".equals(tagName.toUpperCase())) {
      .resetPageIsLoading();
      .executeAtom(.this);
      .waitForPageToLoad();
    }
    Point center = getCenterCoordinates();
    long downTime = SystemClock.uptimeMillis();
    final List<MotionEventevents = new ArrayList<MotionEvent>();
    MotionEvent downEvent =
        MotionEvent.obtain(downTime, SystemClock.uptimeMillis(), .center.x,
            center.y, 0);
    events.add(downEvent);
    MotionEvent upEvent =
        MotionEvent.obtain(downTime, SystemClock.uptimeMillis(), .center.x,
            center.y, 0);
    events.add(upEvent);
    .resetPageIsLoading();
    Activity current = ServerInstrumentation.getInstance().getCurrentActivity();
    EventSender.sendMotion(eventscurrent);
    // If the page started loading we should wait
    // until the page is done loading.
    .waitForPageToLoad();
  }
  public void submit() {
    String tagName = getTagName();
    if ("button".equalsIgnoreCase(tagName) || "submit".equalsIgnoreCase(getAttribute("type"))
        || "img".equalsIgnoreCase(tagName)) {
      this.click();
    } else {
      .resetPageIsLoading();
      .executeAtom(.this);
      .waitForPageToLoad();
    }
  }
  public void clear() {
    .executeAtom(.this);
  }
  public String getAttribute(String name) {
    return (String.executeAtom(.thisname);
  }
  public String getId() {
    return ;
  }
  public int hashCode() {
    final int prime = 31;
    int result = 1;
    result = prime * result + (( == null) ? 0 : .hashCode());
    return result;
  }
  public boolean equals(Object obj) {
    if (this == objreturn true;
    if (obj == nullreturn false;
    if (getClass() != obj.getClass()) return false;
    AndroidWebElement other = (AndroidWebElementobj;
    if ( == null) {
      if (other.id != nullreturn false;
    } else if (!.equals(other.id)) return false;
    return true;
  }
  public Coordinates getCoordinates() {
    if ( == null) {
       =
          new AndroidCoordinates(.equals("0") ? new Point(0, 0) : getCenterCoordinates());
    }
    return ;
  }
New to GrepCode? Check out our FAQ X