2010-12-12 77 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中添加缺失的请求参数。