PDA

View Full Version : سوال: کلیک خودکار روی سابمیت باتن



Moh@mmad
شنبه 06 فروردین 1390, 18:21 عصر
سلام

من یه کنترل وب بروزر توی فرم دارم که یک صفحه رو لود میکنه که شامل 3 تا فیلد و یکی دکمه سابمیت هست

که میخوام سه تا فیلد یه صورت خودکار مقادیر رو از تکست باکس بگیرن بعد رو دکمه سابمیت کلیک بشه

فیلدها پر میشن ولی دکمه سابمیت کلیک نمیخوره

مشخصات دکمه توی صفحه اینجوریه

<div class="controls clearfix">
<input type="hidden" name="secfrdcodedvar" id="secfrdcodedvar" value="1bc037c956ab2f807905e36122e832bb"><input type="submit" value="ارسال" class="btn" /> </div>
<div class="form_bottom">به سه صورت زیر کدها رو قرار دادم ولی هیچ کدوم کلیک نمیکنن:ناراحت:




HtmlElement elem = webBrowser2.Document.GetElementById("secfrdcodedvar");

elem.InvokeMember("submit");




doc.All["secfrdcodedvar"].InvokeMember("click");





HtmlElement button = webBrowser2.Document.GetElementById("secfrdcodedvar");

if (button != null)

button.InvokeMember("click");

exlord
شنبه 06 فروردین 1390, 20:04 عصر
webBrowser1.Document.InvokeScript("SubmitForm");

function SubmitForm() {
document.forms[0].submit();

Or

frm1.submit();

Or

document.getElementById('frm1').submit();
}


<form id="frm1"> ... </form>

Moh@mmad
شنبه 06 فروردین 1390, 21:56 عصر
آقا نشد که نشد

یکی این کدو تست کنه



private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
System.Windows.Forms.HtmlDocument doc = this.webBrowser1.Document;
doc.All["address"].SetAttribute("value", "test");
doc.All["username"].SetAttribute("value", "test");
doc.All["userpass"].SetAttribute("value", "test");}
WebBrowser1.Document.Forms(0).elements("frm-id ").Click;



این دکمه سابمیت کار نمیکنه کلیک نمکنه با اون کدای بالا هم که گذاشتین نشد



<div style="float:right;width:200px">
<div class="multi-column loginform">
<div style="direction: rtl" id="form-wrapper-13011705234d8e495b9b81b"><form id="frm-13011705234d8e495b9b81b" method="post" action="http://www.mihanblog.com/web/signin/index/atrty/1301170523/avrvy//key/fe9316a1eb296361c6c996e3f66fb883/" > <div class="form-row clearfix">
<label class="" for="address"></label>

<input type="text" name="data[address]" id="address" value="" class="english" /> </div>

<div class="form-row clearfix">
<label for="username"></label>
<input type="text" name="data[username]" id="username" value="" class="english" /> </div>

<div class="form-row clearfix">
<label class="" for="userpass"></label>
<input type="password" name="data[userpass]" id="userpass" value="" class="english" /> </div>


<div class="controls clearfix">
<input type="hidden" name="secfrdcodedvar" id="secfrdcodedvar" value="c77510905750913f603d0e9ae9e276d4"><input type="submit" value="ورود" class="btn" style="width:80px" /> </div>

<div class="form-row clearfix">
</div>

<input type="hidden" name="frm-id" value="13011705234d8e495b9b81b" id="frm-id" /></form></div> <script type="text/javascript">formtarget['13011705234d8e495b9b81b'] = '';</script>

</div>

Moh@mmad
یک شنبه 07 فروردین 1390, 13:05 عصر
یکی راهنمایی کنه لطفا
هر چی سایت خارجیه زیر رو کردیم راه حلشو نیافتیم 2 روزه کل وقتمو گرفته :(

exlord
یک شنبه 07 فروردین 1390, 15:42 عصر
submit کردن یه فرم به این روش کار درستی نیست .... اینجوری باید عمل کنی ..
روش 1 :
private void button1_Click_1(object sender, EventArgs e)
{
HtmlElement loginform = webBrowser1.Document.GetElementById("username").Parent.Parent;

string formID = loginform.GetAttribute("id");
string url = loginform.GetAttribute("action");

WebClient c = new WebClient();
NameValueCollection vals = new NameValueCollection();
vals.Add("data[username]", "myUsername");
vals.Add("data[userpass]", "MyPassword");
vals.Add("data[address]", "MyBlog");

byte[] result = c.UploadValues(url, "POST", vals);
webBrowser1.DocumentText = Encoding.UTF8.GetString(result, 0, result.Length);
}

روش 2 :
private void button1_Click_1(object sender, EventArgs e)
{
HtmlElement loginform = webBrowser1.Document.GetElementById("username").Parent.Parent;

string formID = loginform.GetAttribute("id");
string url = loginform.GetAttribute("action");

webBrowser1.DocumentText = SubmitForm(url);
}

private String SubmitForm(string url)
{

String result = "";
String strPost = "data[username]=myUsername&data[userpass]=MyPassword&data[address]=MyBlog";
StreamWriter myWriter = null;

HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url);
objRequest.Method = "POST";
objRequest.ContentLength = strPost.Length;
objRequest.ContentType = "application/x-www-form-urlencoded";

try
{
myWriter = new StreamWriter(objRequest.GetRequestStream());
myWriter.Write(strPost);
}
catch (Exception e)
{
return e.Message;
}
finally
{
myWriter.Close();
}

HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse();
using (StreamReader sr = new StreamReader(objResponse.GetResponseStream()))
{
result = sr.ReadToEnd();
sr.Close();
}
return result;
}

sara_aryanfar
چهارشنبه 19 مرداد 1390, 17:42 عصر
یعنی هیچ راه ساده تر از استفاده از این همه کد نیست که فقط عمل کلیک رو در مورد این صفحه انجام بد

omidsha
جمعه 30 تیر 1391, 16:09 عصر
یک راه ساده هست که من با webBrowser تو ویژوال 2008 انجام دادم
button1

WebBrowser1.Navigate("http://site")

button2

WebBrowser1.Document.GetElementById("name").SetAttribute("value", TextBox2.Text)
WebBrowser1.Document.GetElementById("password").SetAttribute("value", TextBox2.Text)

WebBrowser1.Document.GetElementById("s1").InvokeMember("click")

aradrobo
شنبه 31 تیر 1391, 22:19 عصر
من به عنوان یک متخصص در امر اسپمر نویسی شما را یک راهنمایی می کنم : همان طور که شما خودتان بیان نمودید : <input type="hidden"
مطمئناً می دانید معنیش چه می شود . لذا نمی توان روی چنین باتن هایی کلیک انجام داد . دلیلش اینه که باتن اصلی این نیست . سایت را معرفی کنید تا به شما بگویم باتنش چه می شود . تشکر فراموش نشود . با بای