Ranorex iframe访问问题

问题描述

我尝试将WebDriver端点与Ranorex一起使用,并且当Ranorex使用简单路径工作时,所有工作都很好,但是当它与iframe一起工作时,一切工作都很好。

如果提供示例,效果会更好:

<div id="layout">
    <span id="element1"></span>
    <iframe id="frame1">
        #document
            <html>
                <span id="element2"></span>
            </html>
    </iframe>
</div>
  • Ranorex端点使用:
  1. 我可以使用以下方式访问任何元素Ranorex端点:

    //span[#'element1']
    
    //iframe[#'frame1']//span[#'element2']
    
  • WebDriver端点使用:
  1. 我可以访问iframe外部包含的元素:(包括iframe本身)

    //span[#'element1']
    
    //iframe[#'frame1']
    
  2. 当我尝试使用WebDriver端点访问iframe中包含的任何元素时出现错误

    //iframe[#'frame1']//span[#'element2']
    

如何在iframe中使用元素?

解决方法

我找到了解决方法。

与硒一样,我们需要在帧之间切换。 我发现WebDriverDocument具有切换框架的功能:

WebDriverDocument wd = WebDriverDocument.FromPatch("//*[1]");
wd.SwitchToFrame("//iframe[@id='frame1']","xpath");
// wd.SwitchToFrame("frane1","id"); - also availabled

之后,我可以管理包含内部iframe的元素:

WebElement  wl  = "//span[#'element2']";