2 reallmy2 reallmy2 于 2014.12.19 09:33 提问

c#使用iframe嵌套问题

小弟想用WebBrowser控件来操作QQ空间的留言板,完成自动留言并点击提交按钮,目前提交按钮功能已经实现,但是往留言板中写文字还没有实现,哪位大神帮帮忙,我的代码如下

if (!webBrowser1.IsBusy)//判断有没有加载新的文档
{
HtmlElement html_input1 = webBrowser1.Document.Window.Frames["tgb"].Document.All["veditor1_Iframe"];
html_input1.SetAttribute("value", "google");//这步不好使
HtmlElement searchButton = webBrowser1.Document.Window.Frames["tgb"].Document.All["btnPostMsg"];//获取到iframe id为tgb下面的button
searchButton.InvokeMember("click");//这步好使

我发现veditor1_Iframe也是一个iframe的id,也就是iframe“tgb”里面又有一个iframe“veditro1_Iframe”,并且里面没有找到输入框的id,请问这时怎么去寻找这个输入框并给它赋值呢??

1个回答

save4me
save4me   Ds   Rxr 2014.12.19 11:05
已采纳

使用下面的代码
我在网上随便搜了一个qq空间的地址(http://410159784.qzone.qq.com/),这个空间的iframe的id和你的不一样(后面注释掉的那两个id),所以我id定义成了变量,方便修改。另外把操作放在了try里面,这样就算没有找到也不会导致程序奔溃。你可以自己修改一下。
还有需要注意的是webBrowser1.IsBusy这个判断可能不能准确判断嵌套的iframe页面是否加载完成。

            if (!webBrowser1.IsBusy)//判断有没有加载新的文档
            {
                string frameBlog = "tgb";//"tblog";
                string frameEdit = "veditor1_Iframe";
                string btnPost = "btnPostMsg";//"submitCommentBtn";

                try {
                    HtmlElement html_input1 = webBrowser1.Document.Window.Frames[frameBlog].Document.Window.Frames[frameEdit].Document.Body;
                    if (html_input1 != null) {
                        html_input1.InnerHtml = "Google";
                        HtmlElement searchButton = webBrowser1.Document.Window.Frames[frameBlog].Document.GetElementById(btnPost);
                        if (searchButton != null) {
                            searchButton.InvokeMember("click");
                        }
                    }

                } catch (Exception) {
                    //throw;
                }
            }
save4me
save4me 不客气,很高兴问题解决了。
接近 3 年之前 回复
reallmy2
reallmy2 大神牛x啊,果然好使了,搞了好久了,非常感谢!
接近 3 年之前 回复
reallmy2
reallmy2 谢谢大神支持,晚上我回去试试!!!!现在在上班,不方便,嘿嘿!
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!