C# 如何使用DotNetBrowser将父iframe作为IElement?

C# 如何使用DotNetBrowser将父iframe作为IElement?,c#,dotnetbrowser,C#,Dotnetbrowser,我需要写函数为采取真正的顶部和左侧元素在窗口中。 在DotNetBrowser中,我们可以获取坐标: int Y = el.BoundingClientRect.Origin.Y; int X = el.BoundingClientRect.Origin.X; public int realY(IElement el) { IFrame f = el.Frame; if (f.IsMain) {

我需要写函数为采取真正的顶部和左侧元素在窗口中。 在DotNetBrowser中,我们可以获取坐标:

int Y = el.BoundingClientRect.Origin.Y;
int X = el.BoundingClientRect.Origin.X;
public int realY(IElement el)
        {
            IFrame f = el.Frame;
            if (f.IsMain)
            {
                return el.BoundingClientRect.Origin.Y;
            }
            else
            { 
                IElement fel = GetElementByAtrTag("iframe", "name", f.Name);
                return el.BoundingClientRect.Origin.Y + fel.BoundingClientRect.Origin.Y;
            }
        }
但如果元素进入iframe,它就不会给出真正的坐标

我写了一些获取真实坐标的方法:

int Y = el.BoundingClientRect.Origin.Y;
int X = el.BoundingClientRect.Origin.X;
public int realY(IElement el)
        {
            IFrame f = el.Frame;
            if (f.IsMain)
            {
                return el.BoundingClientRect.Origin.Y;
            }
            else
            { 
                IElement fel = GetElementByAtrTag("iframe", "name", f.Name);
                return el.BoundingClientRect.Origin.Y + fel.BoundingClientRect.Origin.Y;
            }
        }
但它不是通用的,因为iframe不一定有名称(我在这个方法中使用的名称),或者可以是多个父iframe

我试着换一种方式,对于我来说,需要将元素父元素iframe作为IEElement,没有id或名称,只有子元素IEElement,例如:

public IElement FindIframe(IElement el)
        {
            if (el.Parent.NodeName != "IFRAME")
            {
                
                return FindIframe((IElement)el.Parent);
            }
            else return (IElement)el.Parent;
        }
当达到父iframe元素时,此方法失败,并且其具有NodeName-#文档

我可以选择第一个父iframe,因此:

IFrame parentElFrame = el.Frame;
但IFrame没有BoundingClientRect

DotNetBrowser具有IFrameElement,而此元素具有BoundingClientRect,但我无法将IFrame转换为IFrameElement


我可以去哪里?

我为返回内部元素的父iframe生成so方法:

public IElement FindIframe(IElement el)
        {
            string docframe = el.Frame.Document.DocumentElement.OuterHtml;
            IEnumerable<IElement> elements = ActiveTab.browser.MainFrame.Document.DocumentElement.GetElementsByTagName("iframe");
            foreach(IElement e in elements)
            {
                IFrameElement ef = (IFrameElement)e;
                
                if (ef.ContentDocument.DocumentElement.OuterHtml == docframe)
                {
                    return e;
                }
            }
            return null;
        }