我们的Intranet上有一个位于http://server1/rsyncwebgui.php
的网页,它为我们提供了一种快速触发两个文件共享之间的rSync的方法。出于无趣的安全原因,这是我们必须采取的路线。
网页如下所示:
<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#控制台应用程序驱动此交互?
答案 0 :(得分: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();
答案 1 :(得分:0)
使用Waitn或Selenium等自动化库。两者都是免费的,非常相似的API,都有.Net库。
它们用于网络测试,但也适用于任何网络自动化(我使用它们提交和修改eBay拍卖:))。
两者都有多个浏览器的驱动程序。
答案 2 :(得分:0)
为HiTech Magic召唤的WatiN或Selenium +1。你也可以试试Telerik的free testing framework。 (披露:我是Test Studio的传播者,所以我有点偏颇......)
你也可以使用Watir,它可以让你创建一个简单的Ruby脚本来从命令行调用。我使用Ruby和Watir来处理各种类似的情况。