JxBrowser之二:常用函数addLoadListener

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

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判断)

①在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
                }
            }
        });

效果如下:

 

②增加一个我们自己的按钮

      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);
                }
            }
        });

效果如下:

 

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

      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(); //模拟点击
                }
            }
        });

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

 

以上。

 

posted @ 2018-11-27 21:45  pcwen.top  阅读(2850)  评论(0编辑  收藏  举报
pcwen.top