Как установить значение элемента ввода программно через CSharp? - PullRequest
5 голосов
/ 21 октября 2010

Здравствуйте. Я пытаюсь автоматизировать свой IE для входа на сайт, но проблема в том, что элементы ввода не имеют атрибута HTML ID!Например:

<input type="text" name="user" size="15" value="">

Как программировать C # для вставки текста в это текстовое поле?

Спасибо

Ответы [ 5 ]

6 голосов
/ 21 октября 2010

Добавьте следующие атрибуты к вашему входному тегу: runat="server" и id="someId"

<input id="user" type="text" size="15" runat="server">

Затем на стороне сервера вы делаете:

user.Text = "sample text";

Тогда вы можете сделать что-то вроде:

foreach (Control c in Page.Controls)
{
    TextBox t = c as TextBox;

    if (t != null)
    {
        t.Text = "sample text";
    }
}

Но я не уверен, что он будет работать без атрибута runat="server"

4 голосов
/ 04 ноября 2011

Я знаю, что это немного поздно, но здесь есть альтернатива методу jquery.

Я предполагаю, что с IE вы имеете в виду элемент управления веб-браузера Как только у вас есть документ, вы можете пройти через элементы ввода.

Что-то вроде

<code>HtmlElementCollection inputs = browser.Document.GetElementsByTagName("input");

Затем вы просматриваете каждый из входов. Вы можете проверить имя входа с помощью <code>input.GetAttribute("name").Equals("user")

Вставка значения в поле будет выполняться с помощью

<code>input.SetAttribute("value", "MyUserName");

2 голосов
/ 05 ноября 2013

Может быть, это может помочь: -

  • Примечание: также посмотрите на http://msdn.microsoft.com/en-us/library/2te2y1x6.aspx http://msdn.microsoft.com/en-us/library/system.web.ui.htmltextwriter.aspx http://social.msdn.microsoft.com/Search/en-US/?query=mshtml%20tutorial&ac=1

  • Создайте новый проект, такой как проект приложения Windows,

  • Добавьте ссылки на MSHTML, например, библиотеку объектов Microsoft HTML плюс SHDocVw, т. Е. Элементы управления Microsoft Internet,

  • Создайте функцию с похожим телом и привязайте ее к чему-либо, например, к событию нажатия кнопки:

            /*INTERNET EXPLORER's OBJECT*/
            SHDocVw.InternetExplorer ie = new SHDocVw.InternetExplorer();
    ie.Navigate("http://www.example.com/entry"); /*GO TO EXAMPLE.COM*/
            /*WAIT UNTIL THE BROWSER IS READY AND COMPLETELY LOADED*/
    while (ie.ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) 
            {
               Application.DoEvents();
            }
            mshtml.HTMLDocument doc = ie.Document;
            while (doc.readyState != "complete")
            {
               Application.DoEvents();
            }
    /*GET ALL THE INPUT ELEMETS IN A COLLECTION*/
    MSHTML.IHTMLElementCollection collection=
            doc.getElementsByTagName("INPUT");
            foreach (mshtml.IHTMLElement elem in collection)
            {
              if (elem.getAttribute("name") != null)
                {
                  /*IDENTIFY THE INPUT CONTROL BY NAME ATTRIBUTE*/
          if (elem.getAttribute("name").Equals("user"))
                  {/*ENTER USER NAME*/
                   elem.setAttribute("value", "ABC");
          }
        }
    }                           
    
2 голосов
/ 22 октября 2010

Полагаю, это не "делает это программно с помощью C #" , но вы можете jQuerify страницу, а затем запустить какой-нибудь пользовательский javascript, чтобы манипулировать значением элемента управления,Если вы используете WebBrowser, вы можете вызвать приведенный ниже метод для вставки сценариев.

string script = "script text";
WebBrowser.Navigate(script);

jQuerify code

var s=document.createElement('script');
s.setAttribute('src','http://jquery.com/src/jquery-latest.js');
document.getElementsByTagName('body')[0].appendChild(s);

Пользовательский код

$(document).ready(function(){$('input[type="text"][name="user"]').val('FooBar')});
1 голос
/ 13 июля 2012

Как Нико сказал:

<input id="user" type="text" size="15" runat="server">

, но вы должны попробовать:

user.Value = "sample text";

insted!

...