wie auf eine Schaltfläche durch Java klicken?
-
18-09-2019 - |
Frage
Ich mag Formulare auf HTML-Seiten zugreifen Throught Java Programming Language ohne echten Browser Beteiligung dazwischen.
Zur Zeit mache ich es durch HTML UNIT aber es ist ein bisschen mehr Zeit in Anspruch nimmt eine Seite zu laden . Wenn es um Millionen von Seite zugreifen, dann ist dieses Extra Zeit ankommt.
Gibt es noch andere Methoden, dies zu tun?
Lösung
Ich habe etwas ähnliches verwendet genannt Httpunit vor, aber ich habe keine Ahnung, wie es die Leistung vergleicht weise .
Wenn Sie Millionen von Seiten zu verarbeiten haben, würde ich empfehlen, ein paar mehr Threads es zu werfen. Nur eine Vermutung, aber ich denke, dass, wenn Sie diese auf mehrere Threads skalieren, werden Sie aus der Bandbreite laufen, bevor Sie die CPU-Leistung laufen (in diesem Fall ist es egal, wie viel schneller könnte es sein)
Andere Tipps
eine Webseite mit einem Browser zugreifen, auch Htmlunit, wird langsam sein. Eine bessere Methode ist href="http://blog.objectmentor.com/articles/2010/01/04/ui-test-automation-tools-are-snake-oil" rel="nofollow noreferrer"> Test , so dass Sie Millionen von Seiten nicht zugreifen müssen -. Sie stattdessen genug testen, um sicherzustellen, dass die Web-Oberfläche der untere Schicht korrekt mit
Die meisten der Interaktion in Browser kommt auf einen HTTP-GET oder einer HTTP POST. Sie müssen genau den Vorgang, um herauszufinden, was Sie brauchen, und dann können Sie die URL und / oder Formulardaten aufzubauen. Dann sind Sie so etwas wie diese verwenden:
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) { }