come fare clic su un pulsante attraverso java?
-
18-09-2019 - |
Domanda
Voglio accedere ai moduli su pagine HTML throught linguaggio di programmazione Java senza coinvolgere vero browser in mezzo.
Al momento sto facendo attraverso HTML UNITA ma ci vuole un po 'più di tempo per caricare una pagina . Quando si tratta di accedere a milioni di pagina, quindi questa volta qualcosa in più che conta di più.
C'è qualche altri metodi per fare questo?
Soluzione
Ho usato qualcosa di simile chiamato HttpUnit prima, ma non ho idea di come si confronta prestazioni saggio .
Se si dispone di milioni di pagine per elaborare, mi sento di raccomandare gettando alcuni più thread a questo. Solo una supposizione, ma credo che se si scala fino a questo thread multipli, sarà a corto di banda prima che si esaurisca di potenza della CPU (nel qual caso non importa quanto più veloce potrebbe essere)
Altri suggerimenti
Accesso a una pagina web utilizzando un browser, anche HtmlUnit, sta per essere lento. Un metodo migliore è lo strato appena sotto l'interfaccia web , in modo che non c'è bisogno di accedere a milioni di pagine -. invece si prova abbastanza per fare in modo che l'interfaccia web sta usando correttamente il livello inferiore
La maggior parte delle interazioni in del browser si riduce a un HTTP GET o un HTTP POST. È necessario capire esattamente l'operazione desiderata, e quindi è possibile costruire i dati URL e / o forma. Quindi è possibile utilizzare qualcosa di simile:
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) { }