Я использую Selenium WebDriver (v2.2), чтобы «переключиться» на «верхнюю» рамку следующим образом:
webdriver.SwitchTo().Frame("relative=top");
Это генерирует сообщение об ошибке:
Unable to locate frame: relative=top
Может ли это быть вызвано тем, что на странице, которую я использую, нет фреймов?
EDIT
К сожалению, оба решения, включающие переключение окон, терпят неудачу:
webdriver.SwitchTo().Window(winHandle);
webdriver.SwitchTo().DefaultContent();
Строго говоря, на самом деле они не терпят неудачу. Но вот в чем проблема: допустим, я извлекаю IWebElement в кадре. Вот как примерно выглядит код:
descend-into-the-frame
grab-the-element
ascend-out-of-the-frame-to-the-top
use-the-element
Когда я использую элемент, я получаю исключение "Элемент не существует в кэше". Это связано с тем, что окно «вознесение за пределы кадра» переключает окно, которое очищает кэш. Довольно раздражает. Я нашел обходной путь, хотя:
ascend-out-of-the-frame-to-the-top
descend-into-the-frame
grab-the-element
use-the-element
Это все еще означает, что я должен следить за ситуациями, когда элемент не в кеше. Но, по крайней мере, пока я использую элемент сразу после его извлечения, я в порядке.
Спасибо за помощь всем!