как нажать на кнопку через Java? - PullRequest
0 голосов
/ 05 января 2010

Я хочу получить доступ к формам на страницах HTMl через язык программирования Java без использования реального браузера между ними.

В настоящее время я делаю это через HTML UNIT , но загрузка страницы занимает немного больше времени. Когда дело доходит до доступа к миллионам страниц, это дополнительное время имеет наибольшее значение.

Есть ли другие способы сделать это?

Ответы [ 3 ]

2 голосов
/ 05 января 2010

Ранее я использовал нечто подобное, называемое httpunit , но я не представляю, как оно сравнивает производительность.

Если у вас есть миллионы страниц для обработки, я бы порекомендовал бросить несколькобольше тем на это.Просто предположение, но я думаю, что если вы масштабируете это до нескольких потоков, вы исчерпаете пропускную способность, прежде чем исчерпаете мощность процессора (в этом случае не будет иметь значения, насколько быстрее это может быть)

0 голосов
/ 05 января 2010

Большая часть взаимодействия в браузере сводится к HTTP GET или HTTP POST. Вам нужно точно определить, какая операция вам нужна, а затем вы можете создать URL и / или данные формы. Тогда вы можете использовать что-то вроде этого:

   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) { } 
0 голосов
/ 05 января 2010

Доступ к веб-странице с помощью браузера, даже HtmlUnit, будет медленным. Лучшим способом является тестирование слоя чуть ниже веб-интерфейса , чтобы вам не требовался доступ к миллионам страниц - вместо этого вы тестируете достаточно, чтобы убедиться, что веб-интерфейс использует нижний уровень правильно.

...