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(); //模擬點擊
} } });
你會發現網頁一直閃爍,因為模擬點擊一下,重新刷了一次頁面,又再次進入了這個函數。
以上。