2010-12-12 106 views
1

我需要一些非常簡單的幫助來從Java桌面應用程序在瀏覽器中打開google.com。在使用和的HtmlUnit像這樣HTMLUnit打開窗口顯示google.com

展望:

import java.io.IOException; 

進口的java.net.URL; import java.util.List; import com.gargoylesoftware.htmlunit.WebWindow; import com.gargoylesoftware.htmlunit.BrowserVersion; import com.gargoylesoftware.htmlunit.Page; import com.gargoylesoftware.htmlunit.RefreshHandler; import com.gargoylesoftware.htmlunit.WebClient; import com.gargoylesoftware.htmlunit.html.HtmlAnchor; import com.gargoylesoftware.htmlunit.html.HtmlForm; import com.gargoylesoftware.htmlunit.html.HtmlPage; import com.gargoylesoftware.htmlunit.html.HtmlTable; import com.gargoylesoftware.htmlunit.html.HtmlTableRow;

公共類的HtmlUnit {

public static void main(String[] args) throws Exception { 

//創建並初始化WebClient的對象 Web客戶端Web客戶端=新Web客戶端(BrowserVersion.INTERNET_EXPLORER_8);

 webClient.setThrowExceptionOnScriptError(false); 
webClient.setRefreshHandler(new RefreshHandler() { 

公共無效handleRefresh(頁頁面,URL網址,INT ARG)拋出IOException異常{ 的System.out.println( 「handleRefresh」); }

}); 

     Page NewGooglePage = webClient.openWindow(new URL("http://www.google.com"), "GoogleWindow").getEnclosedPage(); 

當運行在NetBeans這個文件,我應該得到一個窗口彈出?

回答

2

不,

HtmlUnit是一個「無頭瀏覽器」。這意味着你用HtmlUnit做的每一件事都是不可見的。

相反,我建議你嘗試WebDriver/Selenium 2(http://seleniumhq.org/docs/09_webdriver.html)。藉助WebDriver,您可以像Firefox或IE一樣遠程控制瀏覽器。

喜歡的東西:

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.RenderedWebElement; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.firefox.FirefoxDriver; 

public class GoogleSuggest { 
    public static void main(String[] args) throws Exception { 
     // The Firefox driver supports javascript 
     WebDriver driver = new FirefoxDriver(); 

     // Go to the Google Suggest home page 
     driver.get("http://www.google.com/webhp?complete=1&hl=en"); 

     // Enter the query string "Cheese" 
     WebElement query = driver.findElement(By.name("q")); 
     query.sendKeys("Cheese"); 

    } 
} 
+0

哇謝謝你的迴應,這很好,正是我想我需要的。這是否意味着客戶端需要安裝FireFox來運行應用程序? 此外,我其實正在尋找訪問我的應用程序中的谷歌AdWords關鍵字工具,因爲它有我需要彈出瀏覽器,以便用戶可以輸入驗證碼captcha。 正如你在你的代碼中說的「Firefox驅動程序支持javascript」,這是否意味着我可以使用Javascript來彈出一個窗口,只顯示驗證碼進入?我能看到的唯一問題是會話cookie,但可能不會。 – 2010-12-14 03:16:45

+0

是的,您需要在運行webdriver的計算機上安裝實際的「遠程控制」瀏覽器。 你的評論的其餘部分看起來像一個黑客(我不確定它是否與谷歌使用條款兼容),所以祝你好運;) – 2010-12-15 14:32:45

+0

哦,我剛纔測試了你的代碼,它似乎並沒有彈出一個窗口打開?? – 2010-12-16 04:23:59

0

有趣的是這個代碼工作,我改變了IE瀏覽器,似乎東西了與Firefox。

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.ie.InternetExplorerDriver; 



public class KeywordTool { 
    private static final By By = null; 

    public static void main(String[] args) throws Exception { 
     // The Firefox driver supports javascript 
     WebDriver driver = new InternetExplorerDriver(); 

     // Go to the Google Suggest home page 
     driver.get("http://www.google.com"); 

     // Enter the query string "Cheese" 
     WebElement query = driver.findElement(By.name("q")); 
     query.sendKeys("Cheese"); 

    } 
} 
1

...這可能與請求中發送的參數有關。我比較了HTMLUnit和原始瀏覽器發送的內容。有差異。順便說一下,您可以在HmlUnit中添加缺失的請求參數。