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

Фотография

Переход во фрейм

FRAME ФРЕЙМ Селениум switchTo

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

#1 1Aleksandrmd1

1Aleksandrmd1

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

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Денисов АМ

Отправлено 20 октября 2017 - 06:33

Добрый день!

Тесты работают в IE. Возникла следующая проблема:

после нажатия на кнопку, открывается окно с фреймами,  перехожу в это окно в нем DOM такого формата 

<HTML>
<HEAD>
<TITLE>Testin</TITLE>
<META content="text/html; charset=Windows-1251" http-equiv=Content-Type>
</HEAD>
<FRAMESET cols=100%>
<FRAME src="https://localhost:9000/Test/close.do?newWindow=true" frameBorder=0>
</FRAMESET>
</HTML>

Перехожу во фрейм  driver().switchTo().frame(0); но получаю пустой ДОМ. Слипы в реальном коде не использую, делаю таким образом только для отладки и наглядности. 

...
LOG.info("Test1\n"+driver().getPageSource());
driver().switchTo().defaultContent();
driver().switchTo().activeElement();
driver().manage().window().maximize();
Thread.sleep(1000);
driver().switchTo().frame(0);
Thread.sleep(2000);
LOG.info("Test2\n'"+driver().getPageSource()+"'");
...     

В итоге лог выводится строка Test2 с пустым ДОМом. Приложение естественно рабочее по факту код страницы формируется 

<HTML>
<HEAD>
<TITLE>Testing</TITLE>
<META content="text/html; charset=Windows-1251" http-equiv=Content-Type>
</HEAD>
<FRAMESET cols=100%>
<FRAME src="https://localhost:9000/Test/close.do?newWindow=true" frameBorder=0>
<html>
<head>
<body style="margin: 0px; padding: 0px;">
<iframe frameborder="0" src="/Test/close.do?newWindow=true" scrolling="auto" style="position: absolute; height: 100%; width: 100%;">
...
</FRAMESET>
</HTML>

Я так догадываюсь из-за прямой ссылки src="https://localhost:90...?newWindow=true". Вопрос есть ли красивый способ решение данной проблемы? Пока в голову пришли только не красивые грабли. Получение ссылки src, закрытие текущего окна, открытие нового, вставка туда урла и уже работа с iframe. Такой способ рабочий но он плохой так как я вмешиваюсь в реализацию, могу упустить с таким подходом ошибки.


  • 0

#2 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 20 октября 2017 - 09:14

Добрый день!

Тесты работают в IE. Возникла следующая проблема:

после нажатия на кнопку, открывается окно с фреймами,  перехожу в это окно в нем DOM такого формата 

<HTML>
<HEAD>
<TITLE>Testin</TITLE>
<META content="text/html; charset=Windows-1251" http-equiv=Content-Type>
</HEAD>
<FRAMESET cols=100%>
<FRAME src="https://localhost:9000/Test/close.do?newWindow=true" frameBorder=0>
</FRAMESET>
</HTML>

Перехожу во фрейм  driver().switchTo().frame(0); но получаю пустой ДОМ. Слипы в реальном коде не использую, делаю таким образом только для отладки и наглядности. 

...
LOG.info("Test1\n"+driver().getPageSource());
driver().switchTo().defaultContent();
driver().switchTo().activeElement();
driver().manage().window().maximize();
Thread.sleep(1000);
driver().switchTo().frame(0);
Thread.sleep(2000);
LOG.info("Test2\n'"+driver().getPageSource()+"'");
...     

В итоге лог выводится строка Test2 с пустым ДОМом. Приложение естественно рабочее по факту код страницы формируется 

<HTML>
<HEAD>
<TITLE>Testing</TITLE>
<META content="text/html; charset=Windows-1251" http-equiv=Content-Type>
</HEAD>
<FRAMESET cols=100%>
<FRAME src="https://localhost:9000/Test/close.do?newWindow=true" frameBorder=0>
<html>
<head>
<body style="margin: 0px; padding: 0px;">
<iframe frameborder="0" src="/Test/close.do?newWindow=true" scrolling="auto" style="position: absolute; height: 100%; width: 100%;">
...
</FRAMESET>
</HTML>

Я так догадываюсь из-за прямой ссылки src="https://localhost:90...?newWindow=true". Вопрос есть ли красивый способ решение данной проблемы? Пока в голову пришли только не красивые грабли. Получение ссылки src, закрытие текущего окна, открытие нового, вставка туда урла и уже работа с iframe. Такой способ рабочий но он плохой так как я вмешиваюсь в реализацию, могу упустить с таким подходом ошибки.

А почему дело будет в src? Уверены, что переключаетесь в нужный фрэйм и ждете достаточно?


  • 0

#3 1Aleksandrmd1

1Aleksandrmd1

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

  • Members
  • Pip
  • 11 сообщений
  • ФИО:Денисов АМ

Отправлено 20 октября 2017 - 12:00

Жду точно достаточно. Изначально только один фрейм, по этому беру по индексу 0 - driver().switchTo().frame(0);Пробовал и через элемент, результат тот же.

Нахожусь в корне. В корень могу так же выйти всегда успешно 

 

По src, это только мои догадки, так как ссылка прямая с https://localhost:90...?newWindow=true, это вынуждено тк окно откревается ссылкой на др. серевере.  По этому видимо  нет возможности перейти во фрейм полноценно. 

Я думаю если путь был бы относительный  /Test/close.do?newWindow=true, а приложение было бы на том же сервер такой проблемы не возникло бы. Это уже проверено многократно.

Но это только мои догадки.


  • 0

#4 Alex

Alex

    Постоянный участник

  • Members
  • PipPipPip
  • 237 сообщений
  • ФИО:Алексей

Отправлено 23 октября 2017 - 06:03

Жду точно достаточно. Изначально только один фрейм, по этому беру по индексу 0 - driver().switchTo().frame(0);Пробовал и через элемент, результат тот же.

Нахожусь в корне. В корень могу так же выйти всегда успешно 

 

По src, это только мои догадки, так как ссылка прямая с https://localhost:90...?newWindow=true, это вынуждено тк окно откревается ссылкой на др. серевере.  По этому видимо  нет возможности перейти во фрейм полноценно. 

Я думаю если путь был бы относительный  /Test/close.do?newWindow=true, а приложение было бы на том же сервер такой проблемы не возникло бы. Это уже проверено многократно.

Но это только мои догадки.

Тогда, да, возможно как-то связано с ограничениями безопасности. У Selenium было что-то по поводу доменной политики раньше. Не знаю, как сейчас.

Посмотрите тут https://github.com/s...ive/issues/2002

И в целом google: "selenium frame another domain". Судя по всему, это таки проблема


  • 0


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

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