我尝试使用getelementbyid在c#中登录twitter移动版。但是当我调用点击登录按钮时,我收到以下错误。 "对象引用未设置为对象的实例。"这是我正在使用的代码。任何帮助都会很棒。
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Document.GetElementById("session[username_or_email]").InnerText = textBox1.Text.ToString();
webBrowser1.Document.GetElementById("session[password]").InnerText = textBox2.Text.ToString();
webBrowser1.Document.GetElementById("signupbutton").InvokeMember("click");
}
答案 0 :(得分:0)
确保Document
已完全加载,因此请使用DocumentCompleted
可用的WebBrowser
事件。
在某处添加DocumentCompleted
事件处理程序(在构造函数或表单加载中,具体取决于项目的性质)
private void Form_Load(object sender, EventArgs e)
{
//An example place to add this event handler.
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Document_Complete);
}
private void Document_Complete(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser1.Document.GetElementById("session[username_or_email]").InnerText = textBox1.Text;
webBrowser1.Document.GetElementById("session[password]").InnerText = textBox2.Text;
webBrowser1.Document.GetElementById("signupbutton").InvokeMember("click");
}
DocumentCompleted
可以多次触发,在这种情况下,请参阅this post中的答案以提供帮助。
DocumentComplete documentation
除此之外,您无需在.ToString()
TextBoxes
属性上调用Text
,它已经是一个字符串。