Перейти к содержимому

Фотография

Проблема с фреймами


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 fermido

fermido

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Богин Александр

Отправлено 30 июля 2012 - 13:54

Доброго дня, форумчане!

Может кто-нибудь работал со страницами состоящими из большого числа фреймов?
Столкнулся со следующими проблемами:
1) Если в программе ничего не менять, то она примерно в 1 случае из 10 валится на каком-нибудь driver.switchTo().frame();
и совершенно не важно каое имплицитное ожидание я выставляю
2) В одном месте не могу никак переключиться на нужный фрейм. На странице подряд идет несколько фреймов, к фрейму ivuFrm_page1ivu0 я достучался, ввел свои данные, он выплюнул результат, в зависимости от этого результата меняется содержимое фрейма под ним. Firepath мне любезно подсказал, что нижний фрейм называется ivuFrm_page1ivu1, но при попытке сделать switch на него он ругается, что "No frame found". После ввода данных в первый фрейм делаю явное ожидание Thread.sleep(5000).

Буду благодарен, за любую посильную помощь в данных вопросах!
  • 0

#2 neman

neman

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 30 июля 2012 - 15:57

Попробуйте следующее:
1)На всякий случай выставьте эксплицитное ожидание (в ExpectedCondition есть ожидание фрейма)]
2)попробуйте обратится из дефолтного контекста по полному имени - driver.switchTo(ИмяРодительского.ИмяДочернего)
3)Не очень понял, что значит фрейм "под ним"? Всмысле, вложенный? Как гипотеза, может быть произошла путаница во вложенности фреймов, и вы ищете дочерний фрейм, хотя на самом деле он родительский.

PS: Не поможет - код с фреймами в студию!
  • 0

#3 fermido

fermido

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Богин Александр

Отправлено 31 июля 2012 - 07:48

Попробуйте следующее:
1)На всякий случай выставьте эксплицитное ожидание (в ExpectedCondition есть ожидание фрейма)]
2)попробуйте обратится из дефолтного контекста по полному имени - driver.switchTo(ИмяРодительского.ИмяДочернего)
3)Не очень понял, что значит фрейм "под ним"? Всмысле, вложенный? Как гипотеза, может быть произошла путаница во вложенности фреймов, и вы ищете дочерний фрейм, хотя на самом деле он родительский.

PS: Не поможет - код с фреймами в студию!


1) А можно мне какой-нибудь простенький пример кода ожидания появления фрейма? я не особо понял как с фреймами вообще разговаривать. Только переключаться учусь и то проблемы возникают)
2-3) Оба этих фрейма являются дочерними для одного родительского фрейма и я решил, что они должны быть прозрачны.
Прописал driver.switchTo().defaultContent().switchTo().frame("parent").switchTo().frame("son") - помогло. Спасибо!
  • 0

#4 fermido

fermido

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Богин Александр

Отправлено 31 июля 2012 - 07:57

Попробуйте следующее:
1)На всякий случай выставьте эксплицитное ожидание (в ExpectedCondition есть ожидание фрейма)]
2)попробуйте обратится из дефолтного контекста по полному имени - driver.switchTo(ИмяРодительского.ИмяДочернего)
3)Не очень понял, что значит фрейм "под ним"? Всмысле, вложенный? Как гипотеза, может быть произошла путаница во вложенности фреймов, и вы ищете дочерний фрейм, хотя на самом деле он родительский.

PS: Не поможет - код с фреймами в студию!


1) А можно мне какой-нибудь простенький пример кода ожидания появления фрейма? я не особо понял как с фреймами вообще разговаривать. Только переключаться учусь и то проблемы возникают)
2-3) Оба этих фрейма являются дочерними для одного родительского фрейма и я решил, что они должны быть прозрачны.
Прописал driver.switchTo().defaultContent().switchTo().frame("parent").switchTo().frame("son") - помогло. Спасибо!
  • 0

#5 neman

neman

    Активный участник

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 31 июля 2012 - 10:32

1) А можно мне какой-нибудь простенький пример кода ожидания появления фрейма? я не особо понял как с фреймами вообще разговаривать. Только переключаться учусь и то проблемы возникают)

new WebDriverWait(driver, timeout).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt("Имя Фрейма"))
Ждет фрейм с указанным именем, переключает туда. Если в течении <timeout> секунд фрейм не появился, выбрасывает TimeoutException.
Перед этим кодом надо отключить имплицитные ожидания (выставить в 0). После выполнения можно будет включить обратно.
  • 1

#6 fermido

fermido

    Новый участник

  • Members
  • Pip
  • 8 сообщений
  • ФИО:Богин Александр

Отправлено 31 июля 2012 - 10:49

Ок, попробую! Спасибо!
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных