Используя платформу тестирования Codeception и модуль Selenium 2 для тестирования веб-сайта, я заканчиваю гиперссылку, которая открывает новое окно без имени. В результате функция switchToWindow()
не будет работать, потому что она пытается переключиться на родительское окно (которое я сейчас нахожу). Не имея возможности переключиться в новое окно, я не могу выполнить никаких тестов.Переход к окну без имени
<a class="external" target="_blank" href="http://mylocalurl/the/page/im/opening">
View Live
</a>
Использование как Chrome и Firefox отладки я могу подтвердить новое окно не имеет имя, и я не могу дать ему один, потому что я не могу изменить страницу HTML я работаю над. В идеале я бы поменял HTML на использование javascript onclick="window.open('http://mylocalurl/the/page/im/opening', 'myPopupWindow')
, но это невозможно в моем случае.
Я огляделся на форумах Selenium без какого-либо четкого метода решения этой проблемы, и Codeception, похоже, не обладает большой функциональностью.
Есть ли ' getWindowNames() 'введите команду в Codeception? Извините, я не могу найти документацию. –
Нет, документация практически не существует (хотя и улучшается с течением времени), однако большинство функций являются расширениями методов Selenium 2. Я считаю, что могу выполнить * некоторые методы Selenium 2, но какие и сколько я понятия не имею. Документы: http://codeception.com/docs/modules/Selenium2 – Tro
Вау, это настоящий маринад. Я думаю, что 'executeInSelenium' будет вашим лучшим выбором. Глядя в привязку к привязкам PHP webdriver, он имеет доступ к методам 'getWindowHandle()' и 'getWindowHandles()'. Поэтому я мог только опасаться, что вы 'getWindowHandle()' перед тем, как открыть новое окно 'getWindowHandles()' после. Это означает, что вы знаете два имени, чтобы вы могли извлечь имя «нового окна» из массива, полученного из 'getWindowHandles()'. Надеюсь, это дало вам некоторые идеи следующего шага, поскольку, к сожалению, я не могу понять, как написать пример кода. –