ScriptResult result = page.executeJavaScript("document.getElementById('ctl00_ctl00_ctl00_cph1_cph1_QuickSearchAll1_QuickFlightSearchControl1_btnSearch_Table').onclick()"); final Page newPage = result.getNewPage();
... ScriptResult newResult = loginPage.executeJavaScript("<some javascript1>; <some javascript2>;..."); HtmlPage newPage = (HtmlPage) newResult.getNewPage();
ScriptResult result = page.executeJavaScript(onclickAttr); Page resultPage = result.getNewPage();
/** * <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(); }
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); final WebClient webClient = new WebClient(BrowserVersion.CHROME); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); webClient.getOptions().setTimeout(10000); try { HtmlPage htmlPage = webClient.getPage("http://qatarsale.com/EnMain.aspx"); Document doc = Jsoup.parse(htmlPage.asXml()); System.out.println(doc.select("[id$=Label10]").text()); ScriptResult result = htmlPage.executeJavaScript("__doPostBack('GridView1','Page$2')"); htmlPage = (HtmlPage)result.getNewPage(); Thread.sleep(3000); // delay needed for lazy loading, there might be something cleaner doc = Jsoup.parse(((HtmlPage)htmlPage).asXml()); System.out.println(doc.select("[id$=Label10]").text()); } catch (Exception e) { e.printStackTrace(); } finally { webClient.close(); }
java.util.logging.Logger.getLogger("com.gargoylesoftware").setLevel(java.util.logging.Level.OFF); final WebClient webClient = new WebClient(BrowserVersion.CHROME); webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); webClient.getOptions().setTimeout(10000); try { HtmlPage page = webClient.getPage("http://www.bloomberg.com/search?query=Apple"); System.out.println(page.getTitleText()); ScriptResult result = page.executeJavaScript("document.querySelector(\"#content > div > section > section.search-results__content > section.content-stories > div.search-result-items > div:nth-child(1) > article > div > h1 > a\").click()"); page = (HtmlPage)result.getNewPage(); System.out.println(page.getTitleText()); } catch (Exception e) { e.printStackTrace(); } finally { webClient.close(); }
public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException { final WebClient webClient = new WebClient(); HtmlPage page = webClient.getPage("http://dv.parliament.bg/DVWeb/broeveList.faces"); for (HtmlAnchor link : (List<HtmlAnchor>) page.getByXPath("//table[@id='broi_form:dataTable1']//a/img/..")) { String commandString = link.getOnClickAttribute().replaceAll("return ", ""); System.out.println(commandString); ScriptResult executeJavaScript = page.executeJavaScript(commandString); Page newPage = executeJavaScript.getNewPage(); save(newPage.getWebResponse().getContentAsStream()); page = webClient.getPage("http://dv.parliament.bg/DVWeb/broeveList.faces"); } }
/** * Resets this form to its initial values, returning the page contained by this form's window after the * reset. Note that the returned page may or may not be the same as the original page, based on JavaScript * event handlers, etc. * * @return the page contained by this form's window after the reset */ public Page reset() { final SgmlPage htmlPage = getPage(); final ScriptResult scriptResult = fireEvent(Event.TYPE_RESET); if (ScriptResult.isFalse(scriptResult)) { return scriptResult.getNewPage(); } for (final HtmlElement next : getAllHtmlChildElements()) { if (next instanceof SubmittableElement) { ((SubmittableElement) next).reset(); } } return htmlPage; }
/** * Resets this form to its initial values, returning the page contained by this form's window after the * reset. Note that the returned page may or may not be the same as the original page, based on JavaScript * event handlers, etc. * * @return the page contained by this form's window after the reset */ public Page reset() { final SgmlPage htmlPage = getPage(); final ScriptResult scriptResult = fireEvent(Event.TYPE_RESET); if (ScriptResult.isFalse(scriptResult)) { return scriptResult.getNewPage(); } for (final HtmlElement next : getAllHtmlChildElements()) { if (next instanceof SubmittableElement) { ((SubmittableElement) next).reset(); } } return htmlPage; }
/** * Resets this form to its initial values, returning the page contained by this form's window after the * reset. Note that the returned page may or may not be the same as the original page, based on JavaScript * event handlers, etc. * * @return the page contained by this form's window after the reset */ public Page reset() { final SgmlPage htmlPage = getPage(); final ScriptResult scriptResult = fireEvent(Event.TYPE_RESET); if (ScriptResult.isFalse(scriptResult)) { return scriptResult.getNewPage(); } for (final HtmlElement next : getAllHtmlChildElements()) { if (next instanceof SubmittableElement) { ((SubmittableElement) next).reset(); } } return htmlPage; }
/** * Simulates the specified mouse event, returning the page which this element's window contains after the event. * The returned page may or may not be the same as the original page, depending on JavaScript event handlers, etc. * * @param eventType the mouse event type to simulate * @param shiftKey <tt>true</tt> if SHIFT is pressed during the mouse event * @param ctrlKey <tt>true</tt> if CTRL is pressed during the mouse event * @param altKey <tt>true</tt> if ALT is pressed during the mouse event * @param button the button code, must be {@link MouseEvent#BUTTON_LEFT}, {@link MouseEvent#BUTTON_MIDDLE} * or {@link MouseEvent#BUTTON_RIGHT} * @return the page which this element's window contains after the event */ private Page doMouseEvent(final String eventType, final boolean shiftKey, final boolean ctrlKey, final boolean altKey, final int button) { if (this instanceof DisabledElement && ((DisabledElement) this).isDisabled()) { return getPage(); } final HtmlPage page = (HtmlPage) getPage(); final Event event = new MouseEvent(this, eventType, shiftKey, ctrlKey, altKey, button); final ScriptResult scriptResult = fireEvent(event); final Page currentPage; if (scriptResult == null) { currentPage = page; } else { currentPage = scriptResult.getNewPage(); } return currentPage; }
/** * Simulates the specified mouse event, returning the page which this element's window contains after the event. * The returned page may or may not be the same as the original page, depending on JavaScript event handlers, etc. * * @param eventType the mouse event type to simulate * @param shiftKey <tt>true</tt> if SHIFT is pressed during the mouse event * @param ctrlKey <tt>true</tt> if CTRL is pressed during the mouse event * @param altKey <tt>true</tt> if ALT is pressed during the mouse event * @param button the button code, must be {@link MouseEvent#BUTTON_LEFT}, {@link MouseEvent#BUTTON_MIDDLE} * or {@link MouseEvent#BUTTON_RIGHT} * @return the page which this element's window contains after the event */ private Page doMouseEvent(final String eventType, final boolean shiftKey, final boolean ctrlKey, final boolean altKey, final int button) { if (this instanceof DisabledElement && ((DisabledElement) this).isDisabled()) { return getPage(); } final HtmlPage page = (HtmlPage) getPage(); final Event event = new MouseEvent(this, eventType, shiftKey, ctrlKey, altKey, button); final ScriptResult scriptResult = fireEvent(event); final Page currentPage; if (scriptResult == null) { currentPage = page; } else { currentPage = scriptResult.getNewPage(); } return currentPage; }
/** * Simulates the specified mouse event, returning the page which this element's window contains after the event. * The returned page may or may not be the same as the original page, depending on JavaScript event handlers, etc. * * @param eventType the mouse event type to simulate * @param shiftKey <tt>true</tt> if SHIFT is pressed during the mouse event * @param ctrlKey <tt>true</tt> if CTRL is pressed during the mouse event * @param altKey <tt>true</tt> if ALT is pressed during the mouse event * @param button the button code, must be {@link MouseEvent#BUTTON_LEFT}, {@link MouseEvent#BUTTON_MIDDLE} * or {@link MouseEvent#BUTTON_RIGHT} * @return the page which this element's window contains after the event */ private Page doMouseEvent(final String eventType, final boolean shiftKey, final boolean ctrlKey, final boolean altKey, final int button) { if (this instanceof DisabledElement && ((DisabledElement) this).isDisabled()) { return getPage(); } final HtmlPage page = (HtmlPage) getPage(); final Event event = new MouseEvent(this, eventType, shiftKey, ctrlKey, altKey, button); final ScriptResult scriptResult = fireEvent(event); final Page currentPage; if (scriptResult == null) { currentPage = page; } else { currentPage = scriptResult.getNewPage(); } return currentPage; }
/** * Executes the onchange script code for this element if this is appropriate. * This means that the element must have an onchange script, script must be enabled * and the change in the element must not have been triggered by a script. * * @param htmlElement the element that contains the onchange attribute * @return the page that occupies this window after this method completes (may or * may not be the same as the original page) */ static Page executeOnChangeHandlerIfAppropriate(final HtmlElement htmlElement) { final SgmlPage page = htmlElement.getPage(); final JavaScriptEngine engine = htmlElement.getPage().getWebClient().getJavaScriptEngine(); if (engine.isScriptRunning()) { return page; } final ScriptResult scriptResult = htmlElement.fireEvent(Event.TYPE_CHANGE); if (page.getWebClient().getWebWindows().contains(page.getEnclosingWindow())) { return page.getEnclosingWindow().getEnclosedPage(); // may be itself or a newly loaded one } else if (scriptResult != null) { // current window doesn't exist anymore return scriptResult.getNewPage(); } return page; } }
/** * Executes the onchange script code for this element if this is appropriate. * This means that the element must have an onchange script, script must be enabled * and the change in the element must not have been triggered by a script. * * @param htmlElement the element that contains the onchange attribute * @return the page that occupies this window after this method completes (may or * may not be the same as the original page) */ static Page executeOnChangeHandlerIfAppropriate(final HtmlElement htmlElement) { final SgmlPage page = htmlElement.getPage(); final JavaScriptEngine engine = htmlElement.getPage().getWebClient().getJavaScriptEngine(); if (engine.isScriptRunning()) { return page; } final ScriptResult scriptResult = htmlElement.fireEvent(Event.TYPE_CHANGE); if (page.getWebClient().getWebWindows().contains(page.getEnclosingWindow())) { return page.getEnclosingWindow().getEnclosedPage(); // may be itself or a newly loaded one } else if (scriptResult != null) { // current window doesn't exist anymore return scriptResult.getNewPage(); } return page; } }
/** * Executes the onchange script code for this element if this is appropriate. * This means that the element must have an onchange script, script must be enabled * and the change in the element must not have been triggered by a script. * * @param htmlElement the element that contains the onchange attribute * @return the page that occupies this window after this method completes (may or * may not be the same as the original page) */ static Page executeOnChangeHandlerIfAppropriate(final HtmlElement htmlElement) { final SgmlPage page = htmlElement.getPage(); final JavaScriptEngine engine = htmlElement.getPage().getWebClient().getJavaScriptEngine(); if (engine.isScriptRunning()) { return page; } final ScriptResult scriptResult = htmlElement.fireEvent(Event.TYPE_CHANGE); if (page.getWebClient().getWebWindows().contains(page.getEnclosingWindow())) { return page.getEnclosingWindow().getEnclosedPage(); // may be itself or a newly loaded one } else if (scriptResult != null) { // current window doesn't exist anymore return scriptResult.getNewPage(); } return page; } }
if (TextUtil.startsWithIgnoreCase(href, JAVASCRIPT_PREFIX)) { return page.executeJavaScriptIfPossible( href, "javascript url", getStartLineNumber()).getNewPage();
if (TextUtil.startsWithIgnoreCase(href, JAVASCRIPT_PREFIX)) { return page.executeJavaScriptIfPossible( href, "javascript url", getStartLineNumber()).getNewPage();
final ScriptResult scriptResult = fireEvent(Event.TYPE_CHANGE); if (scriptResult != null) { page = scriptResult.getNewPage();
final ScriptResult scriptResult = fireEvent(Event.TYPE_CHANGE); if (scriptResult != null) { page = scriptResult.getNewPage();