单击WebBrowser控件中iframe中的Button

Sag*_*gi 5 c# iframe webbrowser-control winforms

我正在使用C#,赢取应用,尝试点击我的webbrowser上的iframe中的按钮.

HTML:

<iframe frameborder="0" scrolling="no" id="EditorIFrmae" name="EditorIFrmae" width="100%" height="700" style="z-index: 0; height: 852px;" src="X"></iframe>
Run Code Online (Sandbox Code Playgroud)

在iframe代码中:

<div height="" width="100%" style="position: relative; min-height: 50px;" onclick="javascript:funcEditPage('SB_Content_Page','SB_Content_PagePreview','PAGE5.asp');" class="SB_DivContentPreview" id="SB_Content_PagePreview">
</div>
Run Code Online (Sandbox Code Playgroud)

我的代码:

HtmlElementCollection linkit = this.webBrowser1.Document.GetElementsByTagName("div");
            foreach (HtmlElement foundit in linkit)
            {
                if (foundit.GetAttribute("id").Equals("SB_Content_PagePreview"))
                {
                    foundit.InvokeMember("Click");
                }
            }
Run Code Online (Sandbox Code Playgroud)

我怎么能点击按钮?

Fab*_*Fab 0

您必须等待 Document完全加载,然后才能尝试在其中查找元素,并且在加载框架时,您也必须在框架内进行搜索。
订阅DocumentCompleted活动

initialUrl = new Uri(/* your url */);
webBrowser.DocumentCompleted += OnDocumentCompleted;
webBrowser.Navigate(initialUrl);
Run Code Online (Sandbox Code Playgroud)

然后尝试在方法内查找元素:

    private void OnDocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs args)
    {
       if (args.Url == initialUrl)
        {
            HtmlElementCollection elements =
                webBrowser.Document.Window.Frames[0].Document.GetElementsByTagName("div");
            foreach (HtmlElement element in elements)
            {
                if (element.GetAttribute("id").Equals("SB_Content_PagePreview"))
                {
                    element.InvokeMember("Click");
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)