com.gargoylesoftware.htmlunit.IncorrectnessListener Java Examples
The following examples show how to use
com.gargoylesoftware.htmlunit.IncorrectnessListener.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: HtmlPageTest.java From htmlunit with Apache License 2.0 | 5 votes |
/** * @throws Exception if an error occurs */ @Test public void testBase_Multiple() throws Exception { final String html = "<html>\n" + "<head>\n" + "<base href='" + URL_SECOND + "'>\n" + "<base href='" + URL_THIRD + "'>\n" + "</head>\n" + "<body>\n" + " <a href='somepage.html'>\n" + "</body></html>"; final WebClient webClient = getWebClient(); final List<String> collectedIncorrectness = new ArrayList<>(); final IncorrectnessListener listener = new IncorrectnessListener() { @Override public void notify(final String message, final Object origin) { collectedIncorrectness.add(message); } }; webClient.setIncorrectnessListener(listener); final MockWebConnection webConnection = new MockWebConnection(); webClient.setWebConnection(webConnection); webConnection.setDefaultResponse(html); final HtmlPage page = webClient.getPage(URL_FIRST); page.getAnchors().get(0).click(); final String[] expectedIncorrectness = {"Multiple 'base' detected, only the first is used.", "Multiple 'base' detected, only the first is used."}; assertEquals(expectedIncorrectness, collectedIncorrectness); }
Example #2
Source File: DomNode.java From htmlunit with Apache License 2.0 | 4 votes |
/** * Notifies the registered {@link IncorrectnessListener} of something that is not fully correct. * @param message the notification to send to the registered {@link IncorrectnessListener} */ protected void notifyIncorrectness(final String message) { final WebClient client = getPage().getEnclosingWindow().getWebClient(); final IncorrectnessListener incorrectnessListener = client.getIncorrectnessListener(); incorrectnessListener.notify(message, this); }
Example #3
Source File: DomNode.java From HtmlUnit-Android with Apache License 2.0 | 4 votes |
/** * Notifies the registered {@link IncorrectnessListener} of something that is not fully correct. * @param message the notification to send to the registered {@link IncorrectnessListener} */ protected void notifyIncorrectness(final String message) { final WebClient client = getPage().getEnclosingWindow().getWebClient(); final IncorrectnessListener incorrectnessListener = client.getIncorrectnessListener(); incorrectnessListener.notify(message, this); }
Example #4
Source File: HiddenBrowserDriver.java From ats-framework with Apache License 2.0 | 4 votes |
/** * Fixing refresh handler to skip Refresh meta tags * Allowing connections to any host, regardless of whether they have valid certificates or not * Fixing JSESSIONID cookie value * Some applications expect double quotes in the beginning and at the end of the JSESSIONID cookie value */ private void fixHtmlUnitBehaviour() { Field webClientField = null; boolean fieldAccessibleState = false; try { TargetLocator targetLocator = webDriver.switchTo(); webClientField = targetLocator.getClass().getDeclaringClass().getDeclaredField("webClient"); fieldAccessibleState = webClientField.isAccessible(); webClientField.setAccessible(true); final WebClient webClient = (WebClient) webClientField.get(targetLocator.defaultContent()); // Allowing connections to any host, regardless of whether they have valid certificates or not webClient.getOptions().setUseInsecureSSL(true); // Set Http connection timeout (in milliseconds). The default value is 90 seconds, because in Firefox >= 16 // the "network.http.connection-timeout" property is 90. But this value is not enough for some cases. // NOTE: use 0 for infinite timeout webClient.getOptions().setTimeout(5 * 60 * 1000); webClient.getOptions().setRedirectEnabled(true); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(true); webClient.getOptions().setPrintContentOnFailingStatusCode(true); // Hide CSS Warnings webClient.setCssErrorHandler(new SilentCssErrorHandler()); // Suppress warnings like: "Expected content type ... but got ..." webClient.setIncorrectnessListener(new IncorrectnessListener() { // private final Log log = LogFactory.getLog( this.getClass() ); @Override public void notify( final String message, final Object origin ) { // log.warn( message ); } }); if (!Boolean.parseBoolean(System.getProperty(ALLOW_META_REFRESH_TAG))) { /* * Fix for refresh meta tags eg. "<meta http-equiv="refresh" content="300">" * The default refresh handler is with Thread.sleep(refreshSecondsFromMetaTag) in the main thread!!! * * Maybe we should check and test this handler: webClient.setRefreshHandler( new ThreadedRefreshHandler() ); */ webClient.setRefreshHandler(new RefreshHandler() { @Override public void handleRefresh( Page page, URL url, int seconds ) throws IOException { } }); } /* * Fix JSessionId */ // WebConnectionWrapper constructs a WebConnection object wrapping the connection of the WebClient // and places itself (in the constructor) as connection of the WebClient. new WebConnectionWrapper(webClient) { public WebResponse getResponse( WebRequest request ) throws IOException { Cookie jsCookie = webClient.getCookieManager().getCookie("JSESSIONID"); if (jsCookie != null && (!jsCookie.getValue().startsWith("\"") && !jsCookie.getValue().endsWith("\""))) { Cookie newCookie = new Cookie(jsCookie.getDomain(), jsCookie.getName(), "\"" + jsCookie.getValue() + "\"", jsCookie.getPath(), jsCookie.getExpires(), jsCookie.isSecure()); webClient.getCookieManager().removeCookie(jsCookie); webClient.getCookieManager().addCookie(newCookie); } return super.getResponse(request); } }; } catch (Exception e) { throw new SeleniumOperationException("Error retrieving internal Selenium web client", e); } finally { if (webClientField != null) { webClientField.setAccessible(fieldAccessibleState); } } }