@Test public void javaScriptEnabledByDefault() { this.driver = MockMvcHtmlUnitDriverBuilder.mockMvcSetup(this.mockMvc).build(); assertTrue(this.driver.isJavascriptEnabled()); }
@Test public void javaScriptDisabled() { this.driver = MockMvcHtmlUnitDriverBuilder.mockMvcSetup(this.mockMvc).javascriptEnabled(false).build(); assertFalse(this.driver.isJavascriptEnabled()); }
public static boolean isHtmlUnitWithDisabledJavaScript(WebElement webElement) { if (webElement instanceof HtmlUnitWebElement) { HtmlUnitDriver htmlUnitDriver = (HtmlUnitDriver) ((HtmlUnitWebElement) webElement).getWrappedDriver(); return !htmlUnitDriver.isJavascriptEnabled(); } return false; }
public static boolean isHtmlUnitWithDisabledJavaScript(WebElement webElement) { if (webElement instanceof HtmlUnitWebElement) { HtmlUnitDriver htmlUnitDriver = (HtmlUnitDriver) ((HtmlUnitWebElement) webElement).getWrappedDriver(); return !htmlUnitDriver.isJavascriptEnabled(); } return false; }
public WebDriver next() { WebWindow window = underlyingIterator.next(); return new HtmlUnitDriver(isJavascriptEnabled(), window); }
private HtmlPage getPageToInjectScriptInto() { if (!isJavascriptEnabled()) { throw new UnsupportedOperationException( "Javascript is not enabled for this HtmlUnitDriver instance"); } final Page lastPage = lastPage(); if (!(lastPage instanceof HtmlPage)) { throw new UnsupportedOperationException("Cannot execute JS against a plain text page"); } else if (!gotPage) { // just to make ExecutingJavascriptTest.testShouldThrowExceptionIfExecutingOnNoPage happy // but does this limitation make sense? throw new WebDriverException("Can't execute JavaScript before a page has been loaded!"); } return (HtmlPage) lastPage; }
public static boolean javascriptIsSupportedIn(WebDriver driver) { if (driver instanceof HtmlUnitDriver) { return ((HtmlUnitDriver) driver).isJavascriptEnabled(); } else { Class<? extends WebDriver> driverClass = getRealDriverClass(driver); return javascriptIsSupportedIn(driverClass); } }
public static boolean javascriptIsSupportedIn(WebDriver driver) { if (driver == null) { return false; } if (driver instanceof WebDriverStub) { return false; } if (driver instanceof HtmlUnitDriver) { return ((HtmlUnitDriver) driver).isJavascriptEnabled(); } else { Class<? extends WebDriver> driverClass = getRealDriverClass(driver); return javascriptIsSupportedIn(driverClass); } }
protected WebElement newHtmlUnitWebElement(HtmlElement element) { if (isJavascriptEnabled()) { return new RenderedHtmlUnitDriverWebElement(this, element); } return new HtmlUnitWebElement(this, element); }
public static boolean javascriptIsSupportedIn(WebDriver driver) { if (driver instanceof HtmlUnitDriver) { return ((HtmlUnitDriver) driver).isJavascriptEnabled(); } else { Class<? extends WebDriver> driverClass = getRealDriverClass(driver); return javascriptIsSupportedIn(driverClass); } }
public static boolean isHtmlUnitWithDisabledJavaScript(WebDriver driver) { return DriverVersionUtils.getInstance().isHtmlUnitDriver(driver) && !((HtmlUnitDriver) driver).isJavascriptEnabled(); }
private static void changeContentEditableValueInHtmlUnit(WebDriver driver, WebElement element, String value) { // we resort to JavaScript when it is enabled if (((HtmlUnitDriver) driver).isJavascriptEnabled()) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0]['innerText' in arguments[0] ? 'innerText' : 'textContent'] = arguments[1];", element, value); } else { // or use reflection if JS is not enabled // (this method is not preferred as it relies on HtmlUnit's internals, which can change without notice) try { // #HtmlUnit #reflection #hack Method getElementMethod = org.openqa.selenium.htmlunit.HtmlUnitWebElement.class.getDeclaredMethod("getElement"); getElementMethod.setAccessible(true); HtmlElement he = (HtmlElement) getElementMethod.invoke(element); HTMLElement e = he.getScriptableObject(); e.setInnerText(value); } catch (Exception e) { LOGGER.warn("Unable to set HtmlUnitWebElement's innerText.", e); } } }
public static boolean isHtmlUnitWithDisabledJavaScript(WebDriver driver) { return DriverVersionUtils.getInstance().isHtmlUnitDriver(driver) && !((HtmlUnitDriver) driver).isJavascriptEnabled(); }
protected WebDriver findActiveWindow() { WebWindow window = webClient.getCurrentWindow(); HtmlPage page = (HtmlPage) window.getEnclosedPage(); if (page != null && page.getFrames().size() > 0) { FrameWindow frame = page.getFrames().get(0); if (!(frame.getFrameElement() instanceof HtmlInlineFrame)) return new HtmlUnitDriver(isJavascriptEnabled(), frame); } if (currentWindow != null && currentWindow.equals(window)) return this; return new HtmlUnitDriver(isJavascriptEnabled(), window); }
private static void changeContentEditableValueInHtmlUnit(WebDriver driver, WebElement element, String value) { // we resort to JavaScript when it is enabled if (((HtmlUnitDriver) driver).isJavascriptEnabled()) { JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript("arguments[0]['innerText' in arguments[0] ? 'innerText' : 'textContent'] = arguments[1];", element, value); } else { // or use reflection if JS is not enabled // (this method is not preferred as it relies on HtmlUnit's internals, which can change without notice) try { // #HtmlUnit #reflection #hack Method getElementMethod = org.openqa.selenium.htmlunit.HtmlUnitWebElement.class.getDeclaredMethod("getElement"); getElementMethod.setAccessible(true); HtmlElement he = (HtmlElement) getElementMethod.invoke(element); HTMLElement e = he.getScriptableObject(); e.setInnerText(value); } catch (Exception e) { LOGGER.warn("Unable to set HtmlUnitWebElement's innerText.", e); } } }
private static String getHtmlUnitInnerHTML(HtmlUnitWebElement element) { WebDriver driver = element.getWrappedDriver(); // we resort to JavaScript when it is enabled if (((HtmlUnitDriver) driver).isJavascriptEnabled()) { JavascriptExecutor js = (JavascriptExecutor) driver; return js.executeScript("return arguments[0].innerHTML", element).toString(); } // or use reflection if JS is not enabled // (this method is not preferred as it relies on HtmlUnit's internals, which can change without notice) try { // #HtmlUnit #reflection #hack Method getElementMethod = HtmlUnitWebElement.class.getDeclaredMethod("getElement"); getElementMethod.setAccessible(true); HtmlElement he = (HtmlElement) getElementMethod.invoke(element); HTMLElement e = (HTMLElement) he.getScriptableObject(); return e.getInnerHTML(); } catch (Exception e) { LOGGER.warn("Unable to get WebElement's innerHTML. Returning empty string.", e); return ""; } }
private static String getHtmlUnitInnerHTML(HtmlUnitWebElement element) { WebDriver driver = element.getWrappedDriver(); // we resort to JavaScript when it is enabled if (((HtmlUnitDriver) driver).isJavascriptEnabled()) { JavascriptExecutor js = (JavascriptExecutor) driver; return js.executeScript("return arguments[0].innerHTML", element).toString(); } // or use reflection if JS is not enabled // (this method is not preferred as it relies on HtmlUnit's internals, which can change without notice) try { // #HtmlUnit #reflection #hack Method getElementMethod = HtmlUnitWebElement.class.getDeclaredMethod("getElement"); getElementMethod.setAccessible(true); HtmlElement he = (HtmlElement) getElementMethod.invoke(element); HTMLElement e = (HTMLElement) he.getScriptableObject(); return e.getInnerHTML(); } catch (Exception e) { LOGGER.warn("Unable to get WebElement's innerHTML. Returning empty string.", e); return ""; } }
private void switchFocusToThisIfNeeded() { HtmlUnitWebElement oldActiveElement = ((HtmlUnitWebElement) parent.switchTo().activeElement()); boolean jsEnabled = parent.isJavascriptEnabled(); boolean oldActiveEqualsCurrent = oldActiveElement.equals(this); try { boolean isBody = oldActiveElement.getTagName().toLowerCase().equals("body"); if (jsEnabled && !oldActiveEqualsCurrent && !isBody) { oldActiveElement.element.blur(); } } catch (StaleElementReferenceException ex) { // old element has gone, do nothing } element.focus(); }
public void click() { assertElementNotStale(); if (!(element instanceof ClickableElement)) return; ClickableElement clickableElement = ((ClickableElement) element); try { if (parent.isJavascriptEnabled() && !(element instanceof HtmlInput)) { element.focus(); } clickableElement.click(); } catch (IOException e) { throw new WebDriverException(e); } catch (ScriptException e) { System.out.println(e.getMessage()); // Press on regardless } }
@Override public Capabilities getCapabilities() { DesiredCapabilities capabilities = DesiredCapabilities.htmlUnit(); capabilities.setPlatform(Platform.getCurrent()); capabilities.setJavascriptEnabled(isJavascriptEnabled()); capabilities.setVersion(Version.getProductVersion()); capabilities.setCapability(SUPPORTS_FINDING_BY_CSS, true); return capabilities; }