2012-06-01 4 views
3

두 개의 파일 공유간에 rSync를 빠르게 시작할 수있는 http://server1/rsyncwebgui.php에있는 인트라넷 웹 페이지가 있습니다. 흥미롭지 않은 보안상의 이유로, 이것이 우리가 취해야 할 길입니다.프로그래밍 방식으로 웹 페이지에서 버튼 누르기

웹 페이지는 다음과 같습니다

<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> 
    <title>Rsync web gui</title> 
</head> 
<body> 
    <script language="javascript"> 
    window.onload = function() { setTimeout(submitForm, 10000); } 
    function submitForm() { document.getElementById('myform').submit(); } 
    </script> 
<h3> Execute rsync between server2 and server3</h3> 
<form id="myform" method="POST"> 
    <input type="hidden" name="resync" value="false"> 
    <input type="hidden" name="scanscheduled" value="false"> 
    <input type="submit" value="Start sync"> 
</form> 
<p> 
    <script language="javascript"> 
    window.onload = function() { 
     if (confirm('Are you sure to start the sync?')) { 
    var formobj = document.getElementById('myform'); 
    formobj.elements['resync'].value = 'true'; 
    formobj.submit(); 
     } 
    } 
    </script> 
</p> 
<p><a href="/rsyncwebgui.php">Refresh page</a></p> 

</body></html> 

사용자가 버튼을 클릭

는 대화 상자가 확인을 요청하는 팝업 "확인/취소"를 선택합니다. 확인을 클릭하면 페이지가 다시 게시되고 rsync가 트리거됩니다.

이 상호 작용을 원격 C# 콘솔 응용 프로그램에서 어떻게 유도 할 수 있습니까?

+1

무엇을 시도하셨습니까? 당신이 Http 포스트 요청을 내야하는 것처럼 보입니다. –

+0

안녕하세요, 스티브 B, 나는 아무 것도 시도하지 않았습니다. 나는 .Net의이 분야에 익숙하지 않다. 나는 일종의 HTTP POST를하고있을 것이라고 추측했지만, 그 이상으로는 내가해야 할 일이 무엇인지 알지 못했다. – Tim

답변

4

지금은 VS에서 확인할 수 없습니다,하지만 당신은 이런 일에 종료됩니다 :

string postDataStr = string.Format("resync=true&scanscheduled=&otherpara=xyz"); 
byte[] postData = Encoding.ASCII.GetBytes(postDataStr); 

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(new Uri("http://server1/rsyncwebgui.php")); 
req.Method= "POST"; 
req.ContentType = "application/x-www-form-urlencoded"; 
req.ContentLength = postData.Length; 
using(var reqStream = req.GetRequestStream()) 
{ 
    reqStream.Write(postData, 0, postData.Length); 
} 

HttpWebResponse response = (HttpWebResponse)req.GetResponse(); 
+0

좋아 보인다. 스티브 감사합니다. 변경됨 :'req.Method = "POST"; ' – Tim

+0

내 코드가 업데이트되었습니다. –

0

Waitn 또는 Selenium 같은 자동화 라이브러리를 사용합니다. 둘 다 무료이며 매우 유사한 API이며 모두 .Net 라이브러리가 있습니다.

그들은 웹 테스트 용이지만 모든 웹 자동화 (필자는 이베이 경매를 제출하고 수정합니다 :)).

둘 다 여러 브라우저 용 드라이버가 있습니다.

0

+1 HiTech 매직이 호출 한 WatiN 또는 Selenium. Telerik의 free testing framework 시도해 볼 수도 있습니다. (공개 : 저는 Test Studio의 전도자입니다. 그래서 조금 편견이 있습니다 ...)

또한 Watir을 사용하면 명령 줄에서 호출 할 간단한 Ruby 스크립트를 만들 수 있습니다. Ruby와 Watir을 이와 비슷한 상황에 사용할 수 있습니다.

관련 문제