comment cliquer sur un bouton par java?
-
18-09-2019 - |
Question
Je veux accéder à des formulaires sur les pages Html throught langage de programmation Java sans impliquer navigateur réel entre les deux.
À l'heure actuelle, je le fais par HTML UNITÉ mais il faut un peu plus de temps pour charger une page . En ce qui concerne l'accès à des millions de pages, alors ce temps peu plus le plus important.
Y at-il d'autres méthodes pour le faire?
La solution
Je l'ai utilisé quelque chose de similaire appelé HTTPUnit avant, mais je ne sais pas comment il se compare sage performances .
Si vous avez des millions de pages à traiter, je recommande de jeter un peu plus de fils à elle. Juste une supposition, mais je pense que si vous redimensionnez ce à plusieurs threads, vous serez à court de bande passante avant de manquer de puissance CPU (dans ce cas, il ne sera pas d'importance combien plus vite il pourrait être)
Autres conseils
Accès à une page Web en utilisant un navigateur, même HtmlUnit, va être lente. Une meilleure méthode consiste à la couche juste au-dessous de l'interface Web , de sorte que vous n'avez pas besoin d'accéder à des millions de pages -. au lieu de tester suffisamment pour vous assurer que l'interface Web utilise la couche inférieure correctement
La plupart des interactions dans le navigateur revient à une requête HTTP GET ou HTTP POST. Vous devez savoir exactement l'opération dont vous avez besoin, et vous pouvez construire l'URL et / ou des données de formulaire. Ensuite, vous pouvez utiliser quelque chose comme ceci:
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) { }