Ranorex. проблема с доступом к iframe

#iframe #webdriver #ranorex

#iframe #webdriver #ranorex

Вопрос:

Я пытаюсь использовать конечную точку 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?

Ответ №1:

Я нашел решение.

Как и в Selenium, нам нужно переключаться между фреймами. Я обнаружил, что WebDriverDocument имеет возможность переключать фреймы:

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

После этого я могу управлять элементами, которые содержали внутренний iframe:

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