Переход к родительскому кадру из iFrame и поиск элемента в родительском кадре с использованием Selenium Webdriver. С#

Сценарий: - У меня есть страница с текстовым редактором iFrame и кнопка на странице. - Я переключился с родительского фрейма на iFrame, чтобы читать из тела текстового редактора - После чтения из текста текстового редактора я хочу нажать кнопку в родительском фрейме страницы. - Для этого я попытался вернуться к родительскому фрейму из iFrame, используя следующий оператор: . WebDriver.SwitchTo() DefaultContent(); - Но все же я не могу найти элемент кнопки, который находится в родительском фрейме.

Я ценю вашу помощь! Благодаря

Ответ 1

Вот для ваших ответов парни. Он решен!

Решение:

  • Пока я использую webDriver.SwitchTo().DefaultContent();, он переключает webDriver в самое верхнее окно страницы. [Раньше я искал элемент кнопки в этом окне и поэтому не смог найти его, поскольку кнопка сидела в главном кадре страницы]

  • После переключения в главное окно я снова переключил webDriver на основной кадр страницы. Этот основной кадр имел элемент кнопки. Таким образом, я смог найти элемент кнопки. И это разрешило проблему!

Таким образом, окончательный код не имеет webDriver.SwitchTo().DefaultContent();, но на его месте есть следующее:

    _webDriver.SwitchTo().Window(windowHandle);
    _webDriver.SwitchTo().Frame("mainFrame");

Примечание: windowHandle в приведенном выше коде является дескриптором самого верхнего окна страницы. Я думаю, это значение может измениться в зависимости от браузеров, но не уверен.

Ответ 2

Я боролся с подобной проблемой и обнаружил, что могу вернуться на Window Handle:

string currentWindow = Driver.CurrentWindowHandle;
// switch to frame and do stuff..
Driver.SwitchTo().Window(currentWindow); // switch back

Ответ 3

В моем случае следующий код работал нормально:

driver.switchTo().parentFrame();