使用Webbrowser的时候遇到的问题

cainiaojiuaiwen 2010-07-11 05:10:57
在使用Webbrowser的时候,发现网页已经被下载完毕,但是网页中的有些控件(或者说是标签)却不管通过什么方式都访问不到。
this.webBrowser1.Document.GetElementsByName(参数)\this.webBrowser1.Document.GetElementsByTagName(参数)\this.webBrowser1.Document.GetElementsById(参数)等方法都试过了,但是都不行。
不知道是什么原因。也不知是否是因为网页在制作的时候用了什么方法防止自动访问网页中的一些控件,或者是别的什么原因。
已经被这个问题困扰几天了,期盼指点迷津!在线等待!
...全文
134 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
已结贴,谢谢大家!
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
好了!很奇怪,原来访问不到的,现在没问题了。遇到贵人了。致以诚挚的谢意!
shrinerain 2010-07-11
  • 打赏
  • 举报
回复
注意frame...
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
是吗,奇怪了,我再试试看!
thoughter 2010-07-11
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 cainiaojiuaiwen 的回复:]

这个网址,其中的textarea标签是访问不到的:

http://www.tianya.cn/publicforum/content/free/1/1939302.shtml
[/Quote]
可以的啊……,就拿我那段代码……
            HtmlElement h = webBrowser1.Document.GetElementById("adsp_content_replybox_box");
if (h == null)
MessageBox.Show("null");
else
h.SetAttribute("value", "ttttt");
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
这个网址,其中的textarea标签是访问不到的:

http://www.tianya.cn/publicforum/content/free/1/1939302.shtml
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
还有一点让人惊讶的是,我用innerHTML和OUterHTML属性输出<FORM>中的HTML内容发现<table>标签竟然不在FORM表单里面!!!!!
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
回复thoughter:

这就是关键所在啊,也是让人纳闷的地方啊,这种方法试过了,这样赋不了值! h 的返回值是NULL。
thoughter 2010-07-11
  • 打赏
  • 举报
回复
            HtmlElement h= webBrowser1.Document.GetElementById("content_replybox_box");
if (h == null)
MessageBox.Show("null");
else
h.SetAttribute("value", "ttttt");

至少就你那段代码,这样可以赋值
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
相关代码如下,想访问其中的textarea标签,然后赋值给它:

<div id="adsp_content_replybox_frame_1">
<FORM method="POST" id=ResponseForm name=ResponseForm>
<input type="hidden" name="Article_bottom" value=>
<input type="hidden" name="strLiushi" value=free>
<input type="hidden" name="strTitle" value='日记'>
<input type="hidden" name="Article" value=1939215>
<input type="hidden" name="flag" value=1>
<input type="hidden" name="Sign" value=1>
<input type="hidden" name="WriterId" value="无味">
<!-- bainianhaohe -->
<input type="hidden" name="WriterId" value="无味">
<input type="hidden" name="validateCode" id="validateCode" value="">
<!-- bainianhaohe -->

<!-- Mem -->
<script type="text/javascript">
………………
</script>
<!-- Mem -->


<table>
<tr><td width="200">
<SCRIPT LANGUAGE="JavaScript">
<!--
/*
………………
*/
//-->
</SCRIPT>
<div id="LoginInfoDiv"></div>

<input type="hidden" value="Response" name="Submit">
<textarea id="content_replybox_box" name="strContent" rows="8" cols="60" style="font-family: 宋体, Arial; font-size: 12pt; height:180px" class=input></textarea>
</td>
<td width="120" id="adsp_content_click"></td>
<td><span id="content_replybox_img_1"></span></td>
</tr>
</table>
</DIV>
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
好的,我把页面的代码整理一下发上来
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
webBrowser1.ReadyState < WebBrowserReadyState.Complete
这个也已经判断过了,显示都正常。
wuyq11 2010-07-11
  • 打赏
  • 举报
回复
看看webbrowser1.DocumentText中内容
加载是否完成
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState < WebBrowserReadyState.Complete) return;
}
thoughter 2010-07-11
  • 打赏
  • 举报
回复
要访问的网页和具体控件能公布不?纯理论的不太容易解决……
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
先吃个饭去,回来继续等待……
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
已经显示了,都正常。
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
我估计是网页在制作的时候这几个关键的标签被制作者用什么方式包装起来了,不轻易让外人在客户端访问。
但是因为网页制作方面的知识很薄弱,发现不了其中的玄机!
yidongliange4 2010-07-11
  • 打赏
  • 举报
回复
虽然下载完了,是不是没显示到Webrowser控件中?没显示获取不到吧
我记得我以前用的时候只要显示了就能获取的啊
cainiaojiuaiwen 2010-07-11
  • 打赏
  • 举报
回复
要访问的标签有ID和name,但是是位于table标签中,这个table标签没有id也没有name.
QQ8902086 2010-07-11
  • 打赏
  • 举报
回复
是不是没有id
加载更多回复(1)

110,538

社区成员

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

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

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