5

您好我正在尝试自动化我的 IE 以登录网站,但问题是输入元素没有 HTML ID 属性!例如:

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

您如何编写 C# 以在此文本框中插入文本?

谢谢

4

5 回答 5

6

将以下属性添加到您的输入标签: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"属性的情况下工作

于 2010-10-21T18:39:08.470 回答
4

我知道这有点晚了,但这是 jquery 方法的替代方法。

我假设 IE 是指 webbrowser 控件。获得文档后,您可以浏览输入元素。

就像是

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

然后循环遍历每个输入。您可以检查输入的名称 input.GetAttribute("name").Equals("user")

将值插入字段将完成

input.SetAttribute("value", "MyUserName");

于 2011-11-04T13:19:52.967 回答
2

我猜这不是“使用 C# 以编程方式执行”,但您可以jQuerify页面,然后运行一些自定义 javascript 来操作控件的值。如果您正在使用WebBrowser,您可以调用以下方法来插入脚本。

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

j查询代码

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')});
于 2010-10-22T16:37:38.197 回答
2

也许这可以帮助: -

  • 注意:还请查看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");
          }
        }
    }                           
    
于 2013-11-05T17:00:09.040 回答
1

正如尼科所说:

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

但你必须尝试:

user.Value = "sample text";

安装!

于 2012-07-12T22:57:57.260 回答