В рамках нашего тестового сценария есть окно 3Dsecure, в котором мне нужно ввести имя пользователя, пароль и нажать кнопку отправки.
Это прекрасно работает для браузера Chrome с веб-драйвером java и selenium.
driver.switchTo().frame(By.id("ThreeDSecureIframe");
Then I type the user credentials and click submit button
Однако при запуске теста в safari он не распознает поля ввода имени пользователя и пароля в iframe. Есть ли обходной путь с javascript и т. Д.?
И родительский элемент, и iframe находятся в разных доменах (т.е. URL-адрес родителя: - https://test.demo.com и URL-адрес iframe: - https://adyen.com)
Если вы добавите относительный URL, упомянутый в src iframe, к родительскому URL, он будет перенаправлен на adyen.com
. Там вы можете ввести учетные данные пользователя, однако, как только вы нажмете «Отправить», вы пропустите идентификатор транзакции, чтобы не возвращаться к родительскому URL)
<iframe id="ThreeDSecureIframe" src="/threedsecure/TriggerPostTo3Ds?clientPaymentTransactionId=7123456-">
<input type="text" id="username">
При попытке использования javascript в консоли он жалуется на междоменную безопасность.
iOS-сафари как ошибка Appium: произошла неизвестная ошибка на стороне сервера
во время обработки команды. Исходная ошибка: ошибка при выполнении
atom: SecurityError (DOM Exception 18): заблокирован фрейм с источником
«test.abc.com» из доступа к фрейму с источником «test.xyz.com».
Протоколы, домены и порты должны совпадать.
![enter image description here](https://i.stack.imgur.com/PhNj7.png)