Skip to content

Instantly share code, notes, and snippets.

@tomtheun
Created November 26, 2012 10:16
Show Gist options
  • Save tomtheun/4147513 to your computer and use it in GitHub Desktop.
Save tomtheun/4147513 to your computer and use it in GitHub Desktop.

Revisions

  1. Tomas Theunissen created this gist Nov 26, 2012.
    42 changes: 42 additions & 0 deletions JQuerySelector.java
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,42 @@
    package nl.avisi.langur.testing;

    import org.openqa.selenium.*;
    import org.openqa.selenium.remote.RemoteWebElement;

    import java.util.List;

    public class JQuerySelector extends By {

    private final String jQuerySelector;

    public JQuerySelector(String selector) {
    this.jQuerySelector = selector;
    }

    @Override
    public List<WebElement> findElements(SearchContext context) {
    return (List<WebElement>) findWithJQuery(context, true);
    }

    @Override
    public WebElement findElement(SearchContext context) {
    return (WebElement) findWithJQuery(context, false);
    }

    private Object findWithJQuery(SearchContext context, boolean returnList) {
    String getArgument = returnList ? "" : "0";

    if (context instanceof RemoteWebElement) {
    WebDriver driver = ((RemoteWebElement) context).getWrappedDriver();

    return ((JavascriptExecutor) driver).executeScript("return $(arguments[0]).find('" + jQuerySelector + "').get(" + getArgument + ");", context);
    }

    return ((JavascriptExecutor) context).executeScript("return $('" + jQuerySelector + "').get(" + getArgument + ");");
    }

    @Override
    public String toString() {
    return "By.jQuerySelector: " + jQuerySelector;
    }
    }