This is the situation:
Using eval makes it even easier. Use an index selector such as [0] with the jQuery code or it will return a collection of elements.
String elementLocator = "$('#btnID')[0]";
public RemoteWebElement getElementByJQueryLocator(String jQueryLocator){
JavascriptExecutor js = (JavascriptExecutor) driver;
RemoteWebElement element = (RemoteWebElement) js.executeScript("return eval(arguments[0]);", jQueryLocator);
return element;
}
RemoteWebElement webElement = getElementByJQueryLocator(elementLocator);
webElement.click();
Not sure of your exact problem but you can build you locator using html id, name, class etc attributes.
I found the solution, which is quite easy:
String jQuerySelector = "'#myDiv input.test'";
RenderedWebElement webElement = (RenderedWebElement) ((JavascriptExecutor) webDriver).executeScript("return $(" + jQuerySelector+ ").get(0);");
Working with an element in jQuery which was previosly selected in Selenium works too:
String jQuerySelector = "arguments[0]";
((JavascriptExecutor) webDriver).executeScript("return $(" + jQuerySelector+ ").doSomethingInJquery();", webElement);