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(); //模擬點擊
 } } });

你會發現網頁一直閃爍,因為模擬點擊一下,重新刷了一次頁面,又再次進入了這個函數。

 

以上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM