Java를 통해 버튼을 클릭하는 방법은 무엇입니까?
-
18-09-2019 - |
문제
실제 브라우저를 포함하지 않고 HTML 페이지에서 Java 프로그래밍 언어를 통해 양식에 액세스하고 싶습니다.
현재 나는 그것을 통해 그것을하고있다 HTML 장치 그러나 페이지를로드하는 데 시간이 조금 더 걸립니다. 수백만 페이지에 액세스 할 때이 여분의 시간이 가장 중요합니다.
이 작업을 수행하는 다른 방법이 있습니까?
해결책
나는 비슷한 것을 사용했습니다 httpunit 전에는 성능을 현명하게 비교하는 방법을 전혀 모른다.
처리 할 수백만 페이지의 페이지가 있다면 더 많은 스레드를 던지는 것이 좋습니다. 단지 추측하지만, 여러 스레드까지 확장하면 CPU 전원이 부족하기 전에 대역폭이 떨어질 것이라고 생각합니다 (이 경우 얼마나 빠를 수 있는지는 중요하지 않음).
다른 팁
브라우저, 심지어 htmlunit을 사용하여 웹 페이지에 액세스하면 느리게 진행됩니다. 더 나은 방법은 웹 인터페이스 바로 아래의 레이어를 테스트하십시오, 수백만 페이지에 액세스 할 필요가 없으므로 웹 인터페이스가 하단 계층을 올바르게 사용하고 있는지 확인하기에 충분히 테스트합니다.
브라우저의 대부분의 상호 작용은 HTTP Get 또는 HTTP 게시물로 내려집니다. 필요한 작업을 정확히 파악한 다음 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) { }
제휴하지 않습니다 StackOverflow