private boolean xpathInput(EmbeddedBrowser browser, String path, String value) { log.info("xpathInput(EmbeddedBrowser browser, String path, String value)"); assert (browser != null); Document doc = null; try { doc = DomUtils.asDocument(browser.getStrippedDom()); } catch (IOException e) { log.debug(e.getMessage()); return false; } assert (doc != null); if (xpathQuery(doc, path)) { Identification id = new Identification(); id.setHow(How.xpath); id.setValue(path); try { log.info("Browser input\n"); log.info(How.xpath.toString()); log.info(path); return browser.input(id, value); } catch (CrawljaxException e) { log.info(e.getMessage()); return false; } } return false; }
/** * initialize the current used controller. 1. build the index state, 2. create a new CrawlSession * from the new index state and the golden standard, 3. run revisitedStatesPlugins on the new * found index. * * @param golderStandard the SFG containing all the original states & edges. * @param goldenIndexState the golden/original index state. */ private void initializeController(StateFlowGraph golderStandard, StateVertix goldenIndexState) { EmbeddedBrowser browser = null; try { browser = getBrowserPool().requestBrowser(); } catch (InterruptedException e) { LOGGER.error("The request for a browser was interuped", e); } browser.goToUrl(this.getConfigurationReader().getCrawlSpecificationReader().getSiteUrl()); doBrowserWait(browser); /** Build the index state */ StateVertix indexState = new StateVertix( browser.getCurrentUrl(), "index", browser.getDom(), getStrippedDom(browser)); /** Build the CrawlSession */ CrawlSession session = new CrawlSession( getBrowserPool(), golderStandard, indexState, getStartCrawl(), getConfigurationReader()); setSession(session); // Because of new Index must be checked run the onRevisitedStatesPlugins CrawljaxPluginsUtil.runOnRevisitStatePlugins(session, goldenIndexState); // Release the browser this.getBrowserPool().freeBrowser(browser); }
private boolean xpathInput( EmbeddedBrowser browser, StateVertex vertex, String path, String value) { log.debug("xpathInput(EmbeddedBrowser browser, StateVertex vertex, String path, String value)"); Document doc = null; try { doc = vertex.getDocument(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } assert (doc != null); if (xpathQuery(doc, path)) { Identification id = new Identification(); id.setHow(How.xpath); id.setValue(path); try { return browser.input(id, value); } catch (CrawljaxException e) { log.debug(e.getMessage()); return false; } } return false; }
public boolean executeInput(EmbeddedBrowser browser, BioFuzzFieldInput in) { log.info("executeInput(EmbeddedBrowser browser,Input in)"); assert (browser != null); assert (in != null); switch (in.getAction()) { case TEXT_INPUT: log.info("text input"); boolean ret = true; for (String elementId : in.getElementIds()) { log.debug("execute input for" + elementId); ret = ret && xpathInput(browser, elementId, in.getInputValue()); } return ret; case CLICK: log.debug("click"); assert (in.getElementIds().size() > 0); return xpathEvent(browser, in.getElementId(0), EventType.click); case GO_TO_URL: log.debug("go to url"); try { browser.goToUrl(new URL(in.getInputValue())); return true; } catch (MalformedURLException e) { // TODO Auto-generated catch block return false; } default: break; } return false; }
public boolean executeInput(EmbeddedBrowser browser, StateVertex vertex, BioFuzzFieldInput in) { log.debug("executeInput(EmbeddedBrowser browser,StateVertex vertex,Input in) "); log.debug("Input: " + in.toString()); assert (browser != null); assert (vertex != null); assert (in != null); switch (in.getAction()) { case TEXT_INPUT: boolean ret = true; for (String elementId : in.getElementIds()) { ret = ret & xpathInput(browser, vertex, elementId, in.getInputValue()); } return ret; case CLICK: return xpathEvent(browser, vertex, in.getElementId(0), EventType.click); case GO_TO_URL: try { browser.goToUrl(new URL(in.getInputValue())); return true; } catch (MalformedURLException e) { // TODO Auto-generated catch block return false; } } return false; }
// Based on the fireEvent Method in the crawljax core private boolean fireEvent(Eventable eventable, EmbeddedBrowser browser) { log.debug("fireEvent(Eventable eventable, EmbeddedBrowser browser)"); Eventable eventToFire = eventable; boolean isFired = false; try { isFired = browser.fireEventAndWait(eventToFire); // } catch (ElementNotVisibleException | NoSuchElementException e) { // return false; } catch (InterruptedException e) { Thread.currentThread().interrupt(); return false; } if (isFired) { return true; } else { return false; // no event fired } }
public boolean xpathEvent(EmbeddedBrowser browser, String path, EventType t) { log.debug("xpathEvent without start\n"); Document doc = null; assert (browser != null); try { doc = DomUtils.asDocument(browser.getStrippedDom()); } catch (IOException e) { log.debug(e.getMessage()); return false; } assert (doc != null); if (xpathQuery(doc, path)) { Identification id = new Identification(); id.setHow(How.xpath); id.setValue(path); Eventable ev = new Eventable(); ev.setEventType(t); ev.setIdentification(id); return fireEvent(ev, browser); } return false; }
@Override public boolean check(EmbeddedBrowser browser) { return browser.getCurrentUrl().toLowerCase().contains(url); }
@Override public boolean isSatisfied(EmbeddedBrowser browser) { return browser.elementExists(identification); }