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

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

    以上。

     

  • 相关阅读:
    LeetCode 1032. Stream of Characters
    LeetCode 872. Leaf-Similar Trees
    LeetCode 715. Range Module
    LeetCode 353. Design Snake Game
    LeetCode 509. Fibonacci Number
    LeetCode 632. Smallest Range Covering Elements from K Lists
    LeetCode 963. Minimum Area Rectangle II
    LeetCode 939. Minimum Area Rectangle
    LeetCode 727. Minimum Window Subsequence
    LeetCode 844. Backspace String Compare
  • 原文地址:https://www.cnblogs.com/chevin/p/10029256.html
Copyright © 2011-2022 走看看