2
我正在使用SWT瀏覽器類,並且遇到問題。我試圖從頁面中複製頁面源代碼,其中大部分數據都是使用ASP動態加載的。問題在於,在顯示整個頁面內容之前,瀏覽器事件偵聽器完成的事件當然會被觸發。這裏是我的代碼的一部分:Java SWT瀏覽器:等待動態頁面完全加載
class GermaniaProgressListener implements ProgressListener {
final Browser browser;
Calendar calen;
SimpleDateFormat dateFormat;
static Integer counter;
static Integer changeCounter;
static Integer completeCounter;
public GermaniaProgressListener(Browser browser, Calendar calen, SimpleDateFormat dateForm) {
super();
this.browser = browser;
this.calen = calen;
this.dateFormat = dateForm;
counter = 1;
}
public void changed(ProgressEvent event) {
}
@Override
public void completed(ProgressEvent arg0) {
String pageContent = "";
if(counter > 1) {
try {
pageContent = (String)browser.evaluate("return document.body.innerHTML");
FileUtilities.writeFile(
FilePaths.GERMANIA_HTML.getFilePath().replace(".", ((Integer)(counter-1)).toString() + "."),
pageContent);
} catch (IOException e) {
e.printStackTrace();
LoggingUtilities.logException(e);
BrowserUtilities.closeBrowser(browser);
}
}
if(counter < 8) {
String strDate = dateFormat.format(calen.getTime());
Boolean ret = browser.execute("this.controler.loadPage(0, '', 'd=" + strDate + "')");
if(!ret) {
LoggingUtilities.logString("Error getting germania pages");
BrowserUtilities.closeBrowser(browser);
return;
}
calen.add(Calendar.DATE, 1);
counter++;
} else {
BrowserUtilities.closeBrowser(browser);
}
}
};
public class PageDowGermania {
static public void getPageContent() {
final Browser browser = BrowserUtilities.createBrowser();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
Calendar calen = Calendar.getInstance();
calen.setTime(new Date());
GermaniaProgressListener fpl = new GermaniaProgressListener(browser, calen, dateFormat);
browser.addProgressListener(fpl);
BrowserUtilities.startBrowser(browser, "http://www.germaniasport.hr");
}
}
我不是在動態網頁的專家,所以,也許有人可以幫助我,如果有例如任何可能性的JavaScript腳本,可以檢查它的頁面完全加載。
在此先感謝
我的答案是否適合你? – Baz
感謝您的回答,但在我的情況下,我沒有找到在頁面加載期間注入此類代碼的方法。我不得不退回到決定頁面是否完全加載的人力資源。 – pdondziak