如何通过java点击按钮?

时间:2010-01-05 18:42:35

标签: java browser automation browser-automation

我希望通过Java编程语言访问HTMl页面上的表单,而不需要介于两者之间的真实浏览器。

目前我正在通过HTML UNIT进行此操作,但加载页面需要更多时间。当涉及访问数百万页时,这个额外的位时间最重要。

还有其他方法吗?

3 个答案:

答案 0 :(得分:2)

之前我曾使用类似名为httpunit的东西,但我不知道它是如何比较性能的。

如果您要处理数百万个页面,我建议您再添加一些页面。只是一个猜测,但我认为,如果你把它扩展到多个线程,你将耗尽带宽,然后你的CPU功率耗尽(在这种情况下,它可能会更快多少)

答案 1 :(得分:0)

使用浏览器(甚至是HtmlUnit)访问网页的速度会很慢。更好的方法是test the layer just below the web interface,这样您就不需要访问数百万个页面 - 而是进行足够的测试以确保Web界面正确使用较低层。

答案 2 :(得分:0)

浏览器中的大多数交互都归结为HTTP GET或HTTP POST。 您需要确切地确定所需的操作,然后才能构建URL和/或表单数据。 Then you can use something like this:

   try { 
    //Construct data 
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); 
    // Send data 
    URL url = new URL("http://hostname:80/cgi"); 
    URLConnection conn = url.openConnection(); conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line; while ((line = rd.readLine()) != null) { 

    // Process line... } 
    wr.close(); 
    rd.close(); 
    } catch (Exception e) { }