Как программно нажать на ввод текста в WebBrowser с помощью C # - PullRequest
0 голосов
/ 08 октября 2009

Я открыл сайт с помощью WebBrowser. Теперь я хотел бы программно щелкнуть поле ввода текста (текстовое поле). Я не могу использовать фокус, потому что этот сайт использует JS, чтобы разблокировать это поле, только если оно щелкнуло, и я пробовал также это:

Object obj = ele.DomElement;
System.Reflection.MethodInfo mi = obj.GetType().GetMethod("click");
mi.Invoke(obj, new object[0]); 

Но он возвращает mi = null. Как это сделать, чтобы оно работало?

Ответы [ 4 ]

2 голосов
/ 08 октября 2009

Очень похоже на мой ответ на ваш другой вопрос .

Получите представитель HtmlElement вашего текстового поля и вызовите HtmlElement.InvokeMember ("click") для него.

1 голос
/ 20 ноября 2010

Чтобы заполнить текстовое поле на веб-странице:

string code ="";
code = code + "var MyVar=document.getElementById('tbxFieldNameOnWebPage');if(MyVar != null) MyVar.value = 'SOMEVALUE';";
domDocument.parentWindow.execScript(code, "JScript");

Then To Click a button on a webpage:

code = "";
code = "var SignupFree = document.getElementsByTagName('button')[1];";
code = (code + " SignupFree.click();");
domDocument.parentWindow.execScript(code, "JScript");

Вы также можете использовать document.getElementById('buttonID'); вместо document.getElementsByTagName('button')[1];, но для этой кнопки на этой веб-странице должен быть указан идентификатор.

1 голос
/ 10 декабря 2009

Если можете, используйте:

webbrowser1.Navigate("javascript:document.forms[0].submit()")

или что-то подобное. Для меня это было намного проще и точнее.

0 голосов
/ 08 октября 2009

Используйте InvokeMethhod для функции HtmlElement или Browser.InvokeScript.

...