Как переключать кадры через Selenium в браузере Chrome и Firefox? - PullRequest
0 голосов
/ 12 февраля 2019

В моем случае у меня есть много кадров в тестируемом приложении и много всплывающих окон, поэтому мне нужно каждый раз переходить в всплывающее окно и возвращаться к исходным окнам: хром:

ExemplePg.getWindowHandle(); 
driver.switchTo().defaultContent()
driver.switchTo().frame(sylobHomepg.get_FrameLevel2());

FireFox:
Мне нужно добавить «defaultContent» с помощью:

 ExemplePg.getWindowHandle();
 driver.switchTo().defaultContent();
 driver.switchTo().frame(sylobHomepg.get_FrameLevel2());

Вопросы:

  1. Почему у меня такая разница между Chrome и Firefox??
  2. Моя работа в Jenkins Work Ну, много раз, а иногда и у меня появляется ошибка: No such windows?

Обновление: с Chrome я использую только:

ExemplePg.getWindowHandle(); 
driver.switchTo().defaultContent();
driver.switchTo().frame(sylobHomepg.get_FrameLevel2()); 

Без настройки по умолчанию и ее работы, а также с Firefox мне не нужно добавлять переключатель по умолчанию перед кадром переключателя.

1 Ответ

0 голосов
/ 12 февраля 2019

Соответствующий HTML помог бы нам лучше проанализировать проблему, так как до сих пор не ясно, имеете ли вы дело с <frame> / <iframe>.Возможно, нет существенной разницы между Chrome и Firefox в обработке <frame> / <iframe>.

Нет такой необходимости в ExemplePg.getWindowHandle(); перед переключениеммежду <frame> / <iframe>, но важно:

  • Индуцировать WebDriverWait , чтобы требуемый кадр был доступен и переключиться на него следующим образом.

    new WebDriverWait(driver, 10).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(driver.findElement(sylobHomepg.get_FrameLevel2())));
    

Здесь вы можете найти соответствующее обсуждение по Можно ли переключиться на элемент в кадре без использования driver.switchTo () .frame («frameName») в Selenium Webdriver Java?

...