2013-07-05 4 views
12

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

Я ценю вашу помощь! Thanks

+0

Можем ли мы увидеть HTML из IFrames – Arran

ответ

13

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

Решение:

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

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

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

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

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

6

я боролся с подобной проблемой и нашел, что я мог бы переключиться обратно Window Handle:

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

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

driver.switchTo().parentFrame();