Посмотрел форум и тема с iframe подымалась достаточно часто.
Сейчас сам столкнулся с ситуацией, когда не удается перейти в нужный iframe.
Перепробовал ряд селекторов: ManageBrowser.getDriver().switchTo().frame(driver.findElement(By.selector("iframe[name='msb']"))); ManageBrowser.getDriver().switchTo().frame("msb"); // by attr 'name' ManageBrowser.getDriver().switchTo().frame("msb-id"); // by attr 'id' ManageBrowser.getDriver().switchTo().frame(driver.findElement(By.xpath("//iframe[1]"))); // by XPath
Тестировал в консоли Chrome все эти селекторы - все находили нужный iframe. Какие есть еще варианты поиска/переключения?
iframe - это такой же тег как и все остальные, и методы поиска, в том числе и локаторы поиска, могут быть какими угодно, единственное отличиие данного тега это в том, что он заставляет переключаться webdriver в локальную область видимости втури этого тега, не более.
Если вы не можете найти елемент, то используйте задержки для ожидания появления елемента на странице, а вообще…это уже моветон такое спрашивать:
Предположу, что один фрейм вложен в другой. Сначала Вам следует переключиться на самый первый, а далее - на дочерний.
В Selenide на эту тему есть удобная штука:
switchTo().innerFrame(“parentFrame”, “childFrame_1”);
Вполне возможно. Т.к. страница формируется XSL. В исходном коде ч-з Ctrl+U только XML, а если смотреть в консоли - то HTML с iframe.
Сейчас голову ломаю… разработчикам.