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

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

    以上。

     

  • 相关阅读:
    获取本机IP,用户代理
    10 种机器学习算法的要点(附 Python)(转载)
    怎么查找执行比较慢的sql语句-DBA给的建议
    .net 调度器怎么实现心跳(socket除了他,没选择吧)
    分布式多计算机调度平台
    续【C# 以管理员方式启动Winform,进而使用管理员控制Windows Service】
    C# 以管理员方式启动Winform,进而使用管理员控制Windows Service
    SqlServer2008根据现有表,获取该表的分区创建脚本
    SqlServer常用命令
    创建分区表过程
  • 原文地址:https://www.cnblogs.com/chevin/p/10029256.html
Copyright © 2011-2022 走看看