@Override public void runTest(TestRun run) throws IOException { if (++runs == 50) { runs = 0; cleanUp(); init(); } try { page.set(webClient.get().getPage("about:blank")); } catch (IOException e) { throw new RuntimeException(e); } HtmlPage pageRef = page.get(); pageRef.executeJavaScript(readFile(new File(run.getBaseDirectory(), run.getFileName()))); boolean decodeStack = Boolean.parseBoolean(System.getProperty(TeaVMTestRunner.JS_DECODE_STACK, "true")); File debugFile = decodeStack ? new File(run.getBaseDirectory(), run.getFileName() + ".teavmdbg") : null; RhinoResultParser resultParser = new RhinoResultParser(debugFile); AsyncResult asyncResult = new AsyncResult(); Function function = (Function) page.get().executeJavaScript(readResource("teavm-htmlunit-adapter.js")) .getJavaScriptResult(); Object[] args = new Object[] { decodeStack ? createStackDecoderFunction(resultParser) : null, new NativeJavaObject(function, asyncResult, AsyncResult.class) }; pageRef.executeJavaScriptFunction(function, function, args, page.get()); resultParser.parseResult((Scriptable) asyncResult.getResult(), run.getCallback()); }
/** * Utility method testing if a script result is undefined (there was no return value). * @param scriptResult a script result (may be {@code null}) * @return {@code true} if <tt>scriptResult</tt> is undefined (there was no return value) */ public static boolean isUndefined(final ScriptResult scriptResult) { return scriptResult != null && scriptResult.getJavaScriptResult() instanceof Undefined; } }
/** * Utility method testing if a script result is undefined (there was no return value). * @param scriptResult a script result (may be {@code null}) * @return {@code true} if <tt>scriptResult</tt> is undefined (there was no return value) */ public static boolean isUndefined(final ScriptResult scriptResult) { return scriptResult != null && scriptResult.getJavaScriptResult() instanceof Undefined; } }
/** * Utility method testing if a script result is undefined (there was no return value). * @param scriptResult a script result (may be <tt>null</tt>) * @return <tt>true</tt> if <tt>scriptResult</tt> is undefined (there was no return value) */ public static boolean isUndefined(final ScriptResult scriptResult) { return scriptResult != null && scriptResult.getJavaScriptResult() instanceof Undefined; }
/** * Utility method testing if a script result is undefined (there was no return value). * @param scriptResult a script result (may be <tt>null</tt>) * @return <tt>true</tt> if <tt>scriptResult</tt> is undefined (there was no return value) */ public static boolean isUndefined(final ScriptResult scriptResult) { return scriptResult != null && scriptResult.getJavaScriptResult() instanceof Undefined; }
/** * Utility method testing if a script result is undefined (there was no return value). * @param scriptResult a script result (may be <tt>null</tt>) * @return <tt>true</tt> if <tt>scriptResult</tt> is undefined (there was no return value) */ public static boolean isUndefined(final ScriptResult scriptResult) { return scriptResult != null && scriptResult.getJavaScriptResult() instanceof Undefined; }
/** * Utility method testing if a script result is {@code false}. * @param scriptResult a script result (may be {@code null}) * @return {@code true} if <tt>scriptResult</tt> is {@code false} */ public static boolean isFalse(final ScriptResult scriptResult) { return scriptResult != null && Boolean.FALSE.equals(scriptResult.getJavaScriptResult()); }
/** * Utility method testing if a script result is <tt>false</tt>. * @param scriptResult a script result (may be <tt>null</tt>) * @return <tt>true</tt> if <tt>scriptResult</tt> is <tt>false</tt> */ public static boolean isFalse(final ScriptResult scriptResult) { return scriptResult != null && Boolean.FALSE.equals(scriptResult.getJavaScriptResult()); }
/** * Utility method testing if a script result is <tt>false</tt>. * @param scriptResult a script result (may be <tt>null</tt>) * @return <tt>true</tt> if <tt>scriptResult</tt> is <tt>false</tt> */ public static boolean isFalse(final ScriptResult scriptResult) { return scriptResult != null && Boolean.FALSE.equals(scriptResult.getJavaScriptResult()); }
/** * Utility method testing if a script result is <tt>false</tt>. * @param scriptResult a script result (may be <tt>null</tt>) * @return <tt>true</tt> if <tt>scriptResult</tt> is <tt>false</tt> */ public static boolean isFalse(final ScriptResult scriptResult) { return scriptResult != null && Boolean.FALSE.equals(scriptResult.getJavaScriptResult()); }
/** * Utility method testing if a script result is {@code false}. * @param scriptResult a script result (may be {@code null}) * @return {@code true} if <tt>scriptResult</tt> is {@code false} */ public static boolean isFalse(final ScriptResult scriptResult) { return scriptResult != null && Boolean.FALSE.equals(scriptResult.getJavaScriptResult()); }
private String compileAndCache(String input) { ScriptResult scriptResult = htmlPage.get().executeJavaScript(String.format("CoffeeScript.compile(\"%s\");", input)); String result = (String) scriptResult.getJavaScriptResult(); cache.put(input, result); return result; }
/** * <p class="changed_added_4_0">Run JavaScript expression in page context and returns result</p> * @param script * @return */ public Object runScript(String script){ ScriptResult scriptResult = page.executeJavaScript(script); page = (HtmlPage) scriptResult.getNewPage(); return scriptResult.getJavaScriptResult(); }
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_3); webClient.setJavaScriptEnabled(true); HtmlPage page = webClient.getPage("http://www.google.com/ncr"); ScriptResult scriptResult = page.executeJavaScript("document.title"); System.out.println(scriptResult.getJavaScriptResult());
@Override public String runTest(TestRun run) throws IOException { if (++runs == 50) { runs = 0; cleanUp(); init(); } try { page.set(webClient.get().<HtmlPage>getPage("about:blank")); } catch (IOException e) { throw new RuntimeException(e); } page.get().executeJavaScript(readFile(new File(run.getBaseDirectory(), "runtime.js"))); page.get().executeJavaScript(readFile(new File(run.getBaseDirectory(), "test.js"))); AsyncResult asyncResult = new AsyncResult(); Function function = (Function) page.get().executeJavaScript(readResource("teavm-htmlunit-adapter.js")) .getJavaScriptResult(); Object[] args = new Object[] { new NativeJavaObject(function, asyncResult, AsyncResult.class) }; page.get().executeJavaScriptFunctionIfPossible(function, function, args, page.get()); return (String) asyncResult.getResult(); }
private WebResponse makeWebResponseForJavaScriptUrl(final WebWindow webWindow, final URL url, final String charset) throws FailingHttpStatusCodeException, IOException { final HtmlPage page; if (webWindow instanceof FrameWindow) { final FrameWindow frameWindow = (FrameWindow) webWindow; page = frameWindow.getEnclosingPage(); } else { Page currentPage = webWindow.getEnclosedPage(); if (currentPage == null) { // Starting with a JavaScript URL; quickly fill an "about:blank". currentPage = getPage(webWindow, new WebRequestSettings(WebClient.URL_ABOUT_BLANK)); } page = (HtmlPage) currentPage; } final ScriptResult r = page.executeJavaScriptIfPossible(url.toExternalForm(), "JavaScript URL", 1); if ((r != null && r.getJavaScriptResult() == null) || ScriptResult.isUndefined(r)) { // No new WebResponse to produce. return webWindow.getEnclosedPage().getWebResponse(); } final String contentString = r.getJavaScriptResult().toString(); return new StringWebResponse(contentString, charset, url); }
private WebResponse makeWebResponseForJavaScriptUrl(final WebWindow webWindow, final URL url, final String charset) throws FailingHttpStatusCodeException, IOException { final HtmlPage page; if (webWindow instanceof FrameWindow) { final FrameWindow frameWindow = (FrameWindow) webWindow; page = frameWindow.getEnclosingPage(); } else { Page currentPage = webWindow.getEnclosedPage(); if (currentPage == null) { // Starting with a JavaScript URL; quickly fill an "about:blank". currentPage = getPage(webWindow, new WebRequestSettings(WebClient.URL_ABOUT_BLANK)); } page = (HtmlPage) currentPage; } final ScriptResult r = page.executeJavaScriptIfPossible(url.toExternalForm(), "JavaScript URL", 1); if ((r != null && r.getJavaScriptResult() == null) || ScriptResult.isUndefined(r)) { // No new WebResponse to produce. return webWindow.getEnclosedPage().getWebResponse(); } final String contentString = r.getJavaScriptResult().toString(); return new StringWebResponse(contentString, charset, url); }
private WebResponse makeWebResponseForJavaScriptUrl(final WebWindow webWindow, final URL url, final Charset charset) throws FailingHttpStatusCodeException, IOException { HtmlPage page = null; if (webWindow instanceof FrameWindow) { final FrameWindow frameWindow = (FrameWindow) webWindow; page = (HtmlPage) frameWindow.getEnclosedPage(); } else { final Page currentPage = webWindow.getEnclosedPage(); if (currentPage instanceof HtmlPage) { page = (HtmlPage) currentPage; } } if (page == null) { page = getPage(webWindow, new WebRequest(WebClient.URL_ABOUT_BLANK)); } final ScriptResult r = page.executeJavaScript(url.toExternalForm(), "JavaScript URL", 1); if (r.getJavaScriptResult() == null || ScriptResult.isUndefined(r)) { // No new WebResponse to produce. return webWindow.getEnclosedPage().getWebResponse(); } final String contentString = r.getJavaScriptResult().toString(); final StringWebResponse response = new StringWebResponse(contentString, charset, url); response.setFromJavascript(true); return response; }
@Override public Object executeScript(String script, final Object... args) { HtmlPage page = getPageToInjectScriptInto(); script = "function() {" + script + "\n};"; ScriptResult result = page.executeJavaScript(script); Function func = (Function) result.getJavaScriptResult(); Object[] parameters = convertScriptArgs(page, args); try { result = page.executeJavaScriptFunctionIfPossible( func, (ScriptableObject) getCurrentWindow().getScriptObject(), parameters, page.getDocumentElement()); } catch (Throwable ex) { throw new WebDriverException(ex); } return parseNativeJavascriptResult(result); }
protected void runChild(FrameworkMethod child, RunNotifier notifier) { Description spec1 = Description.createTestDescription(clazz, child.getName()); String sourceCode = "try{new " + NamingUtils.javaToDragomeNotation(clazz) + "()." + javaMethodNameToDragomeNotation(child.getName()) + "(); window.failed=false}catch(e){window.failed=true}"; ScriptResult executeJavaScript = page.executeJavaScript(sourceCode); String resultSource = "window.failed"; executeJavaScript = page.executeJavaScript(resultSource); notifier.fireTestStarted(spec1); if (executeJavaScript.getJavaScriptResult().toString().equals("true")) notifier.fireTestFailure(new Failure(spec1, new Exception("Test failed in javascript engine"))); else notifier.fireTestFinished(spec1); failed = false; }