GetElementsById和GetElementsByTagName无法搜索到html元素

u010105473 2018-09-27 10:12:50
在winform里加了webbrowser控件,通过
HtmlElement tbUserid = webBrowser1.Document.GetElementById("userName"); //通过id获取html相应元素
HtmlElement tbUserid1 = webBrowser1.Document.All["userName"]; //通过name获取html相应元素
HtmlElementCollection searchWords = webBrowser1.Document.GetElementsByTagName("input"); //通过标签获取相应html元素

均无法获取相应html元素,得到结果位null,是怎么回事

...全文
406 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010105473 2018-09-28
  • 打赏
  • 举报
回复
万分感谢,我说怎么死活为null,原来要先定位到iframe,不过现在也不来用webbrowser了,就通过js在网页上操作
token不能为空 2018-09-28
  • 打赏
  • 举报
回复
iframe 里面要先转过去
网上搜一下 webbrowser iframe 相关
FainSheeg 2018-09-28
  • 打赏
  • 举报
回复
如果是的话,先定位iframe再定位标签。
FainSheeg 2018-09-28
  • 打赏
  • 举报
回复
当标签位于框架内时,无法这样直接找到,你看看是不是有框架
编程有钱人了 2018-09-27
  • 打赏
  • 举报
回复
等要么的元素加载完毕 再获取,如果是ajax返回要等到返回成功才能
u010105473 2018-09-27
  • 打赏
  • 举报
回复
上面这个能实现,但换成http://mail.163.com 搜用户名、那些html控件 结果为null,也无法在用户名处自动填入值
u010105473 2018-09-27
  • 打赏
  • 举报
回复

private void Form1_Load(object sender, EventArgs e)
{
this.webBrowser1.Url = new Uri("http://www.hao6v.com/");
}



private void button1_Click(object sender, EventArgs e)
{
HtmlElement searchWords = webBrowser1.Document.All["keyboard"];
searchWords.SetAttribute("value", "guwei4037");
}


就上面的代码,在webbrowser里进http://www.hao6v.com网页,点击button1后自动搜到http://www.hao6v.com网页里的name = ”keyboard“的控件(图中箭头所指位置),在里面填入“guwei4037”值
xuzuning 2018-09-27
  • 打赏
  • 举报
回复
搞不清楚你要做什么了
无论是 id,还是 name,乃至 标记 名,都是对方提供的
并不是你想要有就有的
u010105473 2018-09-27
  • 打赏
  • 举报
回复
http://www.hao6v.com/ 查找name="keyboard"控件 能找到
https://mail.163.com 查找name = “email”控件 找不到(结果为null)
u010105473 2018-09-27
  • 打赏
  • 举报
回复
http://www.hao6v.com/ 查找的是name="keyboard"

是https://mail.163.com查找name = “email” 结果为null

xuzuning 2018-09-27
  • 打赏
  • 举报
回复
http://www.hao6v.com/ 根本就没有
id = email 和 name = email 的控件
连正文中都没有 email 字样
u010105473 2018-09-27
  • 打赏
  • 举报
回复
加载完毕什么意思?怎么加载?
我就很简单的几行:
        private void Form1_Load(object sender, EventArgs e)
{
//this.webBrowser1.Url = new Uri("http://www.hao6v.com/");
this.webBrowser1.Url = new Uri("https://mail.163.com");
}



private void button1_Click(object sender, EventArgs e)
{
//HtmlElement searchWords = webBrowser1.Document.All["keyboard"];
//searchWords.SetAttribute("value", "guwei4037");

HtmlElement searchWords = webBrowser1.Document.All["email"];
//HtmlElement tbUserid = webBrowser1.Document.All["userName"];
//HtmlElement tbUserid = webBrowser1.Document.GetElementById("userName");
//HtmlElementCollection searchWords = webBrowser1.Document.GetElementsByTagName("input");
}


http://www.hao6v.com/用HtmlElement searchWords = webBrowser1.Document.All["keyboard"];能获取,然后用searchWords.SetAttribute("value", "guwei4037");能把guwei4037写到获取的文本框里,
https://mail.163.com用HtmlElement searchWords = webBrowser1.Document.All["email"];和后面几行注释的,searchWords(或者tbUserid)结果都为null

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧