您好 我试图自动化我的IE登录到一个网站,但问题是输入元素没有HTML ID属性!例如:
<input type="text" name="user" size="15" value="">
如何编写C#以在此文本框中插入文本?
由于
答案 0 :(得分: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"
属性
答案 1 :(得分:4)
我知道这有点晚了,但这里是jquery方法的替代方法。
我假设IE是指web浏览器控件。 获得文档后,您可以浏览输入元素。
像
这样的东西
HtmlElementCollection inputs = browser.Document.GetElementsByTagName("input");
然后循环浏览每个输入。您可以使用检查输入的名称
HtmlElementCollection inputs = browser.Document.GetElementsByTagName("input");
使用
将值插入字段
input.GetAttribute("name").Equals("user")
答案 2 :(得分:2)
我想这不是“用C#编程”,但你可以jQuerify页面,然后运行一些自定义的javascript来操纵控件的值。如果您使用的是WebBrowser
,则可以调用以下方法来插入脚本。
string script = "script text";
WebBrowser.Navigate(script);
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')});
答案 3 :(得分: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 Object Library和SHDocVw,即Microsoft Internet Controls,
创建一个与body有点相似的函数,并将其绑定到任何类似按钮的click事件:
/*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");
}
}
}
答案 4 :(得分:1)
正如Nico所说:
<input id="user" type="text" size="15" runat="server">
但你必须尝试:
user.Value = "sample text";
insted的!