Я делаю тестовый набор в Selenium Webdriver с использованием PageObjects, но я сомневаюсь, что экземпляр, на который ссылается WebElement, может работать, даже если драйвер указывает на другой фрейм? На сайте, для которого я пишу тесты, много фреймов (и нет, я не могу перестать использовать фреймы :-)) и один элемент фрейма на каждом сайте — это верхняя панель. Я хотел бы создать один объект PageObject для этого фрейма, который я могу инициализировать и использовать из других объектов PageObject, которые его содержат.
НО я сомневаюсь, что вы можете использовать WebElements, когда драйвер перешел на другой кадр.
Пример:
- Создайте и инициализируйте новый PageObject HomePage
- Переключиться на (кадр1). Переключить на (кадр2)
- Из конструктора создайте объект TopBar, который инициализирует/создает экземпляры элементов, используя расположение драйвера выше. Теперь у меня есть ссылка на WebElement в этом PageObject/frame с именем elmTopBar.
На домашней странице драйвер переключается с этого фрейма (назад на фрейм0), выполняет какую-то другую работу.
Будет ли моя «старая» ссылка на elmTopBar по-прежнему работать из этого местоположения драйвера (тот же объект драйвера) или я буду работать только тогда, когда драйвер каждый раз указывает на frame2 (это означает, что я должен переключаться + инициализировать объект TopBar каждый раз, когда домашней странице нужно что-то в Верхняя панель)?
Я знаю, что если я выполняю поиск элемента из другого фрейма, он не найдет объекты в другом фрейме, но мой вопрос заключается в том, что когда вы делаете/сохраняете ссылку на WebElement, остается ли он работоспособным «навсегда» даже после выполнения switchTo (frameX ) с водителем.
Спасибо заранее!