zoukankan      html  css  js  c++  java
  • 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(); //模拟点击
                    }
                }
            });

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

    以上。

     

  • 相关阅读:
    【线程控制:线程休眠】
    【线程调度-优先级】
    【多线程实现方案一:继承Thread 类】
    【多线程概述】
    【使用Mybatis-Generator自动生成Mapper、Model、Mapping相关文件】
    【springmvc集成mybatis框架】
    【UltraISO制作centos7系统安装盘】
    【己有原码, 为何还有反码和补码?】
    【原码, 反码, 补码的基础概念和计算方法】
    【数据类型】
  • 原文地址:https://www.cnblogs.com/chevin/p/10029256.html
Copyright © 2011-2022 走看看