2014-01-30 4 views
2
url="https://ipv4.google.com/sorry/IndexRedirect?continue=https://www.google.com/search%3Fq%3Dstackoverflow%2B%26rlz%3D1C1KMZB_enTR561TR561%26oq%3Dstac%26aqs%3Dchrome.1.69i59l3j69i60j69i57j69i60.5208j0j7%26sourceid%3Dchrome%26espv%3D210%26es_sm%3D122%26ie%3DUTF-8"; 

webBrowser1.Navigate(url); 

if (url.Contains("ipv4.google.com")) 
{ 
    frm2.ShowDialog(); 
    Application.DoEvents(); 
    webBrowser1.Document.GetElementById("captcha").SetAttribute("value", frm2.code); 
    webBrowser1.Document.GetElementById("submit").InvokeMember("click"); 
} 

Исключение:Указанный приказ недействителен. C# WebBrowser

указано литая не является действительным.

на

webBrowser1.Document.GetElementById("captcha").SetAttribute("value", frm2.code); 
+0

Каков тип frm2.Code? строка? – RononDex

+0

Да Form2 public string code = ""; code = textBox1.Text; – BuuRoCk

+1

Какую бы проблему вы ни думали, строка «Application.DoEvents();» исправлено ... это не так. Это просто спрятало симптомы, проблема все еще существует. Удалите эту строку и правильно обработайте проблему. – nvoigt

ответ

0

Используйте документ, когда он готов к загрузке.

string url = "https://ipv4.google.com/sorry/IndexRedirect?continue=https://www.google.com/search%3Fq%3Dstackoverflow%2B%26rlz%3D1C1KMZB_enTR561TR561%26oq%3Dstac%26aqs%3Dchrome.1.69i59l3j69i60j69i57j69i60.5208j0j7%26sourceid%3Dchrome%26espv%3D210%26es_sm%3D122%26ie%3DUTF-8"; 

WebBrowser webBrowser1 = new WebBrowser(); 
this.Controls.Add(webBrowser1); 
webBrowser1.Dock = DockStyle.Fill; 

webBrowser1.Navigate(url); 

if (url.Contains("ipv4.google.com")) 
{ 
    webBrowser1.DocumentCompleted += handler; 
} 

private void handler(object sender, WebBrowserDocumentCompletedEventArgs e) 
    { 
     frm2.ShowDialog(); 
     webBrowser1.Document.GetElementById("captcha").SetAttribute("value", frm2.code); 
     webBrowser1.Document.GetElementById("submit").InvokeMember("click"); 

     webBrowser1.DocumentCompleted -= handler; 
    }; 
+0

Проблема Документ Webbrowser «Оценка функции отключена из-за того, что предыдущая оценка функции была отключена. Вы должны продолжить выполнение для повторной оценки функции». Пишет – BuuRoCk

+0

. Попробуйте приведенный выше код, чтобы найти выпуск –

+0

doc = null element = null: ( – BuuRoCk

0

Я думаю, что ваш webBrowser1 не документ загружен в тот момент, когда вы пытаетесь получить к нему доступ. Вы должны поместить свой код в if-предложение в обработчик событий для webBrowser1.Navigate. В этот момент webBrowser полностью загрузил документ за адресом

+0

Можете ли вы привести пример? – BuuRoCk

Смежные вопросы