如何通过 CSharp 以编程方式设置输入元素的值?

发布于 2024-09-28 12:12:01 字数 167 浏览 5 评论 0原文

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

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

谢谢

Hello
I am trying to automate my IE to log into a website but the problem is that the input elements do not have an HTML ID attribute! For example:

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

How do you program C# to insert text in this text box?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

但可醉心 2024-10-05 12:12:01

将以下属性添加到您的输入标记中: 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" 属性它是否可以工作

Add the following attributes to your input tag: runat="server" and id="someId"

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

Then server-side you do:

user.Text = "sample text";

Then you can do something like:

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

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

But I'm not sure it'll work without the runat="server" attribute

み格子的夏天 2024-10-05 12:12:01

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

我认为 IE 你指的是网络浏览器控件。
获得文档后,您可以浏览输入元素。

类似于

<代码>
HtmlElementCollection input = browser.Document.GetElementsByTagName("input");

然后循环遍历每个输入。您可以使用以下命令检查输入的名称
<代码>
input.GetAttribute("姓名").Equals("用户")

将值插入字段将通过

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

I know this is a bit late, but here is an alternate to the jquery method.

I assume with IE you mean the webbrowser control.
Once you have the document, you can go through the input -elements.

Something like


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

Then you loop through each of the inputs. You can check the input's name with

input.GetAttribute("name").Equals("user")

Inserting value to the field would be done with


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

情感失落者 2024-10-05 12:12:01

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

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

jQuerify 代码

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')});

I guess this isn't "doing it programatically with C#", but you could jQuerify the page, then run some custom javascript afterwards, to manipulate the value of the control. If you are using WebBrowser, you could call the below method to insert the scripts.

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);

Custom code

$(document).ready(function(){$('input[type="text"][name="user"]').val('FooBar')});
淡淡の花香 2024-10-05 12:12:01

也许这可以帮助:-

  • 注意:另请参阅 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 的对象*/
            SHDocVw.InternetExplorer 即 = new SHDocVw.InternetExplorer();
    即.Navigate("http://www.example.com/entry"); /*转到Example.COM*/
            /*等待浏览器准备好并完全加载*/
    while (即ReadyState != SHDocVw.tagREADYSTATE.READYSTATE_COMPLETE) 
            {
               应用程序.DoEvents();
            }
            mshtml.HTMLDocument doc = ie.Document;
            while (doc.readyState != "完成")
            {
               应用程序.DoEvents();
            }
    /*获取集合中的所有输入元素*/
    MSHTML.IHTMLElementCollection集合=
            doc.getElementsByTagName("INPUT");
            foreach(集合中的 mshtml.IHTMLElement elem)
            {
              if (elem.getAttribute("name") != null)
                {
                  /*通过名称属性识别输入控件*/
          if (elem.getAttribute("名称").Equals("用户"))
                  {/*输入用户名*/
                   elem.setAttribute("值", "ABC");
          }
        }
    }                           
    

Maybe this can help:-

  • NB : also look at 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

  • Create a new project like a Windows form application project,

  • Add references of MSHTML ie Microsoft HTML Object Library plus SHDocVw ie Microsoft Internet Controls,

  • Create a function with body somewhat like and bound it to anything like a button's click event:

            /*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");
          }
        }
    }                           
    
终难愈 2024-10-05 12:12:01

正如尼科所说:

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

但你必须尝试:

user.Value = "sample text";

安装!

As Nico said with:

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

but you must try:

user.Value = "sample text";

insted!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文