2011-01-19 53 views
1

我試圖在通過我的Java應用程序加載的DOM html頁面上執行名爲「returnAllLinkTexts()」的Javascript函數。下面的行是由Swing Buton執行的。嘗試執行Javascript時線程「AWT-EventQueue-0」中的異常java.lang.NullPointerException

myscript = browser.executeJavascript("returnAllLinkTexts()").toString(); //Line 407 

有一段時間我得到以下例外。 Java應用程序不會終止或崩潰。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException com.demo.Main$BigButtonListener.actionPerformed(Main.java:407) 

我曾嘗試以下,以保持重試的20倍左右,但它甚至沒有達到這個地步。例外的是@ 407

int st = 0; 
while (myscript == null){ 
myscript = browser.executeJavascript("gogo()").toString();        if (myscript != null) break; 
if (shit == 20) break; 
sht++; 
} 

UPDATE立即提出:

這是JavaScript函數returnAllLinkTexts();

function returnAllLinkTexts(){ 
var mydata = new Array(); 

$('a', document).each(function() { 
    mydata.push($(this).text()); 
}); 

return mydata; 
} 

回答

1

我能想到爲什麼returnAllLinkTexts是打破的唯一的事情(因此您將收到null)是當jQuery的加載之前,它被稱爲。

如果可能,請在頁面完成加載後嘗試調用browser.executeJavascript否則檢查null是否與其他人已經建議的一樣,並且可以繼續嘗試調用它(例如使用計時器),直到它不爲空爲止。

編輯:既然你已經使用的返回值的字符串,可以返回字符串開始,例如:

return mydata.join(","); 

將返回逗號分隔的鏈接文字。

+0

這是正確的方向,但jQuery已經加載。這個Java異常似乎只在使用returnAllLinkTexts的時候發生....如果它只是一個簡單的文本,那麼就沒有Java NullPointerExceptions ....我試圖調用它100個循環,花了大約一分鐘,但它仍然是空的。 ...然後其他時間工作正常......現在完全沮喪。 – KJW 2011-01-19 12:17:06

0

不要無條件的返回值調用toString(),這可能是空值。總是先檢查null!

1

您對可能爲null的對象調用toString()。

- >首先,我想用try-catch塊

圍繞但問題是爲什麼返回值可能爲空? 檢查函數的返回值 ..

努爾

+0

我已經提供了上面的功能....但我不明白它爲什麼會返回null。有100%的確定性頁面上的鏈接。 – KJW 2011-01-19 09:12:10

相關問題