JxBrowser之二:经常使用函数addLoadListener

一、经常使用函数addLoadListener,包含对页面加载状态的多种监控回调。app

browser.addLoadListener(new LoadAdapter() { @Override public void onStartLoadingFrame(StartLoadingEvent event) { if (event.isMainFrame()) { System.out.println("Main frame has started loading"); } } @Override public void onProvisionalLoadingFrame(ProvisionalLoadingEvent event) { if (event.isMainFrame()) { System.out.println("Provisional load was committed for a frame"); } } @Override public void onFinishLoadingFrame(FinishLoadingEvent event) { if (event.isMainFrame()) { System.out.println("Main frame has finished loading"); } } @Override public void onFailLoadingFrame(FailLoadingEvent event) { NetError errorCode = event.getErrorCode(); if (event.isMainFrame()) { System.out.println("Main frame has failed loading: " + errorCode); } } @Override public void onDocumentLoadedInFrame(FrameLoadEvent event) { System.out.println("Frame document is loaded."); } @Override public void onDocumentLoadedInMainFrame(LoadEvent event) { System.out.println("Main frame document is loaded."); } });

 

2.实验代码(为了节省展现代码,去掉了一些null判断)ide

①在baidu的输入框中填写咱们本身的输入数据函数

        browser.addLoadListener(new LoadAdapter() { @Override public void onFinishLoadingFrame(FinishLoadingEvent event) { //String url = event.getValidatedURL(); //能够使用getValidatedURL过滤处理特定的url
                if (event.isMainFrame()) { DOMDocument doc = event.getBrowser().getDocument(); DOMElement kwInput = doc.findElement(By.id("kw")); //找到对应的输入框元素(这里的By类提供了多种查找的方式)
                    kwInput.setAttribute("value", "JxBrowser"); //在输入框中输入JxBrowser
 } } });

效果以下:测试

 

②增长一个咱们本身的按钮url

      browser.addLoadListener(new LoadAdapter() { @Override public void onFinishLoadingFrame(FinishLoadingEvent event) { //String url = event.getValidatedURL(); //能够使用getValidatedURL过滤处理特定的url
                if (event.isMainFrame()) { DOMDocument doc = event.getBrowser().getDocument(); DOMElement ele = doc.findElement(By.id("form"));//找到对应的表单
                    DOMElement btn = doc.createElement("button");//加入一个测试按钮
                    btn.setInnerText("测试"); ele.appendChild(btn); } } });

效果以下:spa

 

③模拟点击"百度一下"按钮code

      browser.addLoadListener(new LoadAdapter() { @Override public void onFinishLoadingFrame(FinishLoadingEvent event) { //String url = event.getValidatedURL(); //能够使用getValidatedURL过滤处理特定的url
                if (event.isMainFrame()) { DOMDocument doc = event.getBrowser().getDocument(); DOMElement baiduBtn = doc.findElement(By.id("su"));//找到对应的按钮
                    baiduBtn.click(); //模拟点击
 } } });

你会发现网页一直闪烁,由于模拟点击一下,从新刷了一次页面,又再次进入了这个函数。orm

 

以上。blog

相关文章
相关标签/搜索