Обновление вложенного iframe в скрипте Selenium

Я работаю над приложением, в пользовательском интерфейсе которого есть вложенные фреймы. Некоторые фреймы iframe обновляются во время выполнения теста. Есть ли способ имитировать обновление iframe с помощью Selenium? Я пробовал использовать Javascript и WebDriverWait, но это не сработало.

Я использовал следующие методы:

public static void waitForIframeToLoad(String frameName){
    WebDriverWait wait = new WebDriverWait(driver,60);
 wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(frameName));
}


public static void refreshIFrameUsingJavaScript(String iFrameName)
{
    JavascriptExecutor js = (JavascriptExecutor) driver;
    js.executeScript(String.format("document.getElementById('{0}').src = " + 
  "document.getElementById('{0}').src", iFrameName));
 }

Однако оба эти метода не работают. Я могу переключаться между фреймами с помощью driver.switchTo (). Frame ("main"). SwitchTo (). Frame ("framename")

Фрейм main является родительским и содержит несколько дочерних фреймов. Дочерние фреймы обновляются после того, как пользователь нажимает какую-либо кнопку, и мне нужно проверить текст в дочернем фрейме после его обновления. Однако после обновления дочернего фрейма я не могу получить доступ к каким-либо элементам скрипта. Кто-нибудь работал по подобному сценарию? каков наилучший обходной путь для этого?

Вопросы, требующие помощи по отладке («Почему этот код не работает?»), Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для их воспроизведения в самом вопросе. Вопросы без четкой постановки проблемы не будут полезны другим читателям. См .: Как создать минимальный, полный и проверяемый пример.

DebanjanB 15.03.2018 11:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
1 098
1

Ответы 1

Когда вы обновляетесь, ваши объекты веб-элементов становятся «устаревшими» и больше не являются теми же объектами. Вам необходимо (повторно) создать экземпляр объекта (ов) веб-элемента. Возможно, вам даже придется сначала переключиться обратно на родительский фрейм, затем перейти к дочернему фрейму и, наконец, создать экземпляры ваших объектов веб-элемента.

Другие вопросы по теме