public void start(Stage primaryStage) { WebView webview = new WebView(); final WebEngine webengine = webview.getEngine(); webengine.getLoadWorker().stateProperty().addListener( new ChangeListener<State>() { public void changed(ObservableValue ov, State oldState, State newState) { if (newState == Worker.State.SUCCEEDED) { Document doc = webengine.getDocument(); try { Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); transformer.transform(new DOMSource(doc), new StreamResult(new OutputStreamWriter(System.out, "UTF-8"))); } catch (Exception ex) { ex.printStackTrace(); } } } }); webengine.load("http://stackoverflow.com"); primaryStage.setScene(new Scene(webview, 800, 800)); primaryStage.show(); }
private static String getTitle(WebEngine webEngine) { Document doc = webEngine.getDocument(); if(doc==null){ return ""; } ... }
boolean containsFrame(JSObject doc) { return engine.get().getDocument().equals(doc) || ancestors(engine.get().getDocument(), doc) != null; }
class Browser extends Region{ private final String title = getTitle(webEngine); private static String getTitle(WebEngine webEngine) { Document doc = webEngine.getDocument(); NodeList heads = doc.getElementsByTagName("head"); ... } }
private String getTitle(WebEngine webEngine) { Document doc = webEngine.getDocument(); NodeList heads = doc.getElementsByTagName("head"); String titleText = webEngine.getLocation() ; // use location if page does not define a title if (heads.getLength() > 0) { Element head = (Element)heads.item(0); NodeList titles = head.getElementsByTagName("title"); if (titles.getLength() > 0) { Node title = titles.item(0); titleText = title.getTextContent(); } } return titleText ; }
private String getTitle(WebEngine webEngine) { Document doc = webEngine.getDocument(); NodeList heads = doc.getElementsByTagName("head"); String titleText = webEngine.getLocation(); // use location if page does not define a title return getFirstElement(heads) .map(h -> h.getElementsByTagName("title")) .flatMap(this::getFirstElement) .map(Node::getTextContent).orElse(titleText); } private Optional<Element> getFirstElement(NodeList nodeList) { if (nodeList.getLength() > 0 && nodeList.item(0) instanceof Element) { return Optional.of((Element) nodeList.item(0)); } return Optional.empty(); }
@Override public String getCurrentUrl() { if (webView.getEngine().getDocument() == null) { return ""; } return webView.getEngine().getDocument().getDocumentURI(); } }
WebEngine engine = webView.getEngine(); engine.getLoadWorker().stateProperty().addListener((obs, oldState, newState) -> { if (newState == Worker.State.SUCCEEDED) { addStylesheet(engine.getDocument(), "http://page.com/style.css"); } }); engine.load(/* your html ... */);
void selectFrame(ElementServer frame) { synchronized (lock) { this.frame = null; if (frame != null && frame.node() instanceof Document && !frame.node().equals(engine.get().getDocument())) { List<Node> ancestors = ancestors(engine.get().getDocument(), frame.node()); if (ancestors != null && !ancestors.isEmpty() && ancestors.get(0) instanceof JSObject) { try { this.frame = new ElementServer((JSObject) ancestors.get(0), this); } catch (RemoteException e) { Util.handleException(e); } } } else if (frame != null && (frame.node() instanceof HTMLIFrameElement || frame.node() instanceof HTMLFrameElement)) { this.frame = frame; } } }
WebEngine webEngine = webView.getEngine(); webEngine.getLoadWorker().stateProperty().addListener(new ChangeListener<State>() { public void changed(ObservableValue ov, State oldState, State newState) { if (newState == Worker.State.SUCCEEDED) { // note next classes are from org.w3c.dom domain EventListener listener = new EventListener() { public void handleEvent(Event ev) { System.out.println(ev.getType()); } }; Document doc = webEngine.getDocument(); Element el = doc.getElementById("textarea"); ((EventTarget) el).addEventListener("keypress", listener, false); } } }); webEngine.loadContent("<textarea id='textarea'></textarea>");
if (t1 == Worker.State.SUCCEEDED) { try { printDocument(webEngine.getDocument(), System.out); } catch (Exception e) { e.printStackTrace(); }
/** * {@inheritDoc} */ @Override public String getPageSource() { init(); WebElement element = ElementServer.create(context.get().item()).findElementByTagName("html"); if (element != null) { String outerHtml = element.getAttribute("outerHTML"); if (outerHtml != null && !outerHtml.isEmpty()) { return outerHtml; } } return AppThread.exec(context.get().item().statusCode, () -> { WebPage page = Accessor.getPageFor(context.get().item().engine.get()); String html = page.getHtml(page.getMainFrame()); if (html != null && !html.isEmpty()) { return html; } try { StringWriter stringWriter = new StringWriter(); Transformer transformer = TransformerFactory.newInstance().newTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.transform(new DOMSource(context.get().item().engine.get().getDocument()), new StreamResult(stringWriter)); return stringWriter.toString(); } catch (Throwable t) {} return page.getInnerText(page.getMainFrame()); }); }
if (newValue.intValue() == 100 /*percents*/) { try { org.w3c.dom.Document doc = webEngine.getDocument(); new XMLSerializer(System.out, new OutputFormat(doc, "UTF-8", true)).serialize(doc); } catch (IOException ex) {
final WebView webView = new WebView(); final WebEngine webEngine = webView.getEngine(); webEngine.getLoadWorker().stateProperty().addListener((observable, oldState, newState) -> { if (newState == State.SUCCEEDED) { Document doc = webEngine.getDocument(); } }); webEngine.loadContent("<h1>hello</h1>"); //webEngine.load("http://google.ch"); // This works too
JSObject selectedFrameDoc() { synchronized (lock) { if (frame != null && ancestors(engine.get().getDocument(), frame.node()) != null) { if (frame.node() instanceof HTMLIFrameElement) { Document doc = ((HTMLIFrameElement) frame.node()).getContentDocument(); if (doc instanceof JSObject) { return (JSObject) doc; } } if (frame.node() instanceof HTMLFrameElement) { Document doc = ((HTMLFrameElement) frame.node()).getContentDocument(); if (doc instanceof JSObject) { return (JSObject) doc; } } } frame = null; Document doc = engine.get().getDocument(); if (doc instanceof JSObject) { return (JSObject) doc; } return null; } }
Worker.State oldState, Worker.State newState ) { if ( newState == Worker.State.SUCCEEDED ) { Element emailField = engine.getDocument().getElementById( "Email" ); if ( emailField != null ) { emailField.setAttribute( "Value", username ); Element passwordField = engine.getDocument().getElementById( "Passwd" ); if ( emailField != null ) { passwordField.setAttribute( "Value", password ); HTMLFormElement gaia_loginform = ( HTMLFormElement ) engine.getDocument().getElementById( "gaia_loginform" ); if ( gaia_loginform != null ) { if ( !submitted.get() ) {
public class MainController implements Initializable { @FXML private WebView webDoc; public void initialize(URL location, ResourceBundle resources) { final WebEngine webEngine = webDoc.getEngine(); String url = this.getClass().getResource("/html/main.html").toExternalForm(); webEngine.load(url); webEngine.getLoadWorker().stateProperty().addListener((observable, oldState, newState) -> { if (newState == Worker.State.SUCCEEDED) { final Document doc = webEngine.getDocument(); EventTarget button = (EventTarget) doc.getElementById("goButton"); button.addEventListener("click", evt -> { HTMLTextAreaElement textField = (HTMLTextAreaElement) doc.getElementById("inputText"); alert(textField.getValue()); }, false); } }); } private void alert(String text) { Alert alert = new Alert(Alert.AlertType.CONFIRMATION, text); alert.showAndWait(); } }
Document doc = webEngine.getDocument() ; Element styleNode = doc.createElement("style"); Text styleContent = doc.createTextNode(CSS);
Document doc = webEngine.getDocument() ; Element styleNode = doc.createElement("style"); Text styleContent = doc.createTextNode(CSS);
org.openqa.selenium.Point selectedFrameLocation() { synchronized (lock) { int xCoord = 0; int yCoord = 0; if (frame != null) { List<Node> ancestors = ancestors(engine.get().getDocument(), frame.node()); if (ancestors != null) { for (Node cur : ancestors) { try { if (cur instanceof JSObject) { org.openqa.selenium.Point point = new ElementServer((JSObject) cur, this).getLocation(); xCoord += point.getX(); yCoord += point.getY(); } } catch (RemoteException e) { Util.handleException(e); } } } } return new org.openqa.selenium.Point(xCoord, yCoord); } }