package com.abmash.REMOVE.core.htmlquery.selector; import java.util.List; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote.RemoteWebElement; import com.abmash.api.Browser; import com.abmash.api.HtmlElement; import com.abmash.api.HtmlElements; public class JQuerySelector extends Selector { public JQuerySelector(String expression) { this(expression, 0); } public JQuerySelector(String expression, int weight) { super(expression, weight); if(this.expression.isEmpty()) throw new RuntimeException("JQuery expression cannot be null or empty"); } @Override public String getExpressionAsJQueryCommand() { // TODO replace single quotes if necessary return "jQuery(abmash.getData('queryElements'))." + expression/*.replaceAll("'", "\\\\'")*/; } @Override public HtmlElements find(Browser browser) { return find(browser, new HtmlElement(browser, (RemoteWebElement) browser.getWebDriver().findElement(By.tagName("body")))); } @Override public HtmlElements find(Browser browser, HtmlElement rootElement) { String script = "abmash.setData('queryElements', arguments[0]); var abmashQueryResult = " + getExpressionAsJQueryCommand() + "; return abmashQueryResult.get();"; Object result = browser.javaScript(script, rootElement).getReturnValue(); return result != null ? new HtmlElements(browser, (List<WebElement>) result) : null; } }