Како се рукује иФрамес-ом у програму Селениум Вебдривер: свитцхТо ()

Преглед садржаја:

Anonim

иФраме у Селениум Вебдривер

иФраме у програму Селениум Вебдривер је веб страница или уграђени оквир који је уграђен у другу веб страницу или ХТМЛ документ уграђен у други ХТМЛ документ. Ифраме се често користи за додавање садржаја из других извора попут огласа на веб страницу. Ифраме је дефинисан ознаком < ифраме >.

У овом упутству ћете научити -

  1. Како препознати ифраме:
  2. Како пребацити елементе у ифраме-овима помоћу команди веб управљачког програма:
  3. Концепт угнежђених оквира (оквири унутар оквира):

Како препознати ифраме:

Не можемо открити оквире само тако што ћемо видети страницу или прегледати Фиребуг.

Обратите пажњу на доњу слику, реклама која се приказује је ифраме, не можемо је лоцирати или препознати само прегледом помоћу Фиребуга. Дакле, питање је како можете идентификовати ифраме?

Како идентификовати ифраме помоћу програма Селениум ВебДривер

Оквире у селенијуму можемо идентификовати користећи доле дате методе:

  • Кликните десним тастером миша на елемент. Ако нађете опцију као што је 'Тхис Фраме', то је ифраме. (Погледајте горњи дијаграм)
  • Кликните десним тастером миша на страницу и кликните на „Прикажи извор странице“ и претражите помоћу „ифраме“, ако можете да пронађете било које име ознаке са „ифраме“, онда то значи да се каже страница која се састоји од ифраме-а.

На горњем дијаграму можете видети да је опција „ Овај оквир “ доступна десним кликом, па смо сада сигурни да је то ифраме.

Чак можемо да идентификујемо укупан број ифрамеова помоћу доњег исечка.

Инт сизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). Сизе ();

Како пребацити елементе у ифраме-овима помоћу команди веб управљачког програма:

У основи, можемо пребацити елементе и руковати оквирима у селенијуму на 3 начина.

  • По индексу
  • По имену или ИД-у
  • Аутор Веб Елемент

Прелазак на оквир по индексу:

Индекс је један од атрибута за руковање кадром у Селенијуму путем којег можемо прећи на њега.

Индекс ифраме-а започиње са „0“.

Претпоставимо да ако на страници има 100 оквира, можемо да пређемо на кадар у Селенијуму помоћу индекса.

  • дривер.свитцхТо (). фраме (0);
  • дривер.свитцхТо (). фраме (1);

Пребаците се на оквир према имену или ИД-у:

Име и ИД су атрибути за руковање оквирима у Селенијуму преко којих можемо прећи на ифраме.

  • дривер.свитцхТо (). фраме ("ифраме1");
  • дривер.свитцхТо (). фраме ("ид елемента");

Пример преласка на ифраме преко ИД-а:

Узмимо пример за пребацивање оквира у селенијуму приказаном на доњој слици. Наш захтев је да кликнемо на ифраме.

Овом ифрамеу можемо приступити преко ове УРЛ адресе испод: хттп: //демо.гуру99.цом/тест/гуру99хоме/

Немогуће је кликнути на ифраме директно кроз КСПатх јер је то ифраме. Прво се морамо пребацити на оквир, а затим можемо кликнути помоћу кпатх-а.

Корак 1)

Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет ("хттп://демо.гуру99.цом/тест/гуру99хоме/");дривер.манаге (). виндов (). макимизе ();
  • Иницијализујемо Фирефок управљачки програм.
  • Дођите до странице „гуру99“ која се састоји од ифраме-а.
  • Увећао прозор.

Корак 2)

дривер.свитцхТо (). фраме ("а077аа5е");
  • У овом кораку морамо да пронађемо ИД ифраме-а прегледом кроз Фиребуг.
  • Затим пређите на ифраме преко ИД-а.

Корак 3)

дривер.финдЕлемент (Би.кпатх ("хтмл / боди / а / имг")). цлицк ();
  • Овде треба да откријемо путању елемента на који се кликће.
  • Кликните на елемент помоћу горе приказане команде веб управљачког програма.

Ево комплетног кода:

јавни разред СвитцхТоФраме_ИД {јавна статичка воид главна (Стринг [] аргс) {Управљачки програм за ВебДривер = нови ФирефокДривер (); // прелази у прегледачдривер.гет ("хттп://демо.гуру99.цом/тест/гуру99хоме/");// прелази на страницу која се састоји од ифраме-адривер.манаге (). виндов (). макимизе ();дривер.свитцхТо (). фраме ("а077аа5е"); // пребацивање оквира помоћу ИД-аСистем.оут.принтлн ("******** Прешли смо на ифраме *******");дривер.финдЕлемент (Би.кпатх ("хтмл / боди / а / имг")). цлицк ();// Кликне на ифрамеСистем.оут.принтлн ("********* Завршили смо ***************");}}

Излаз:

Прегледач долази до странице која се састоји од горе наведеног ифраме-а и кликће на ифраме.

Пребаците се на оквир помоћу Веб Елемента:

Можемо чак и да се пребацимо на ифраме користећи веб елемент.

  • дривер.свитцхТо (). фраме (ВебЕлемент);

Како се вратити на главни оквир

Морамо изаћи из ифраме-а.

Да бисте се вратили на родитељски оквир, можете да користите свитцхТо (). ПарентФраме () или ако се желите вратити на главни (или већину надређених) оквира, можете да користите свитцхТо (). ДефаултЦонтент ();

дривер.свитцхТо (). парентФраме ();дривер.свитцхТо (). дефаултЦонтент ();

Како пребацити оквир, ако НЕ МОЖЕМО да се пребацимо помоћу ИД-а или веб елемента:

Претпоставимо да ако на страници има 100 оквира, а не постоји ИД, у овом случају једноставно не знамо из ког се учитава захтеваног ифраме елемента (случај је када не знамо индекс оквира такође).

Решење за горњу забринутост је да морамо пронаћи индекс ифраме-а кроз који се елемент учитава, а затим се кроз индекс треба пребацити на ифраме.

Испод су кораци за проналажење индекса оквира којим се елемент учитава помоћу доњег исечка

Корак 1)

Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет ("хттп://демо.гуру99.цом/тест/гуру99хоме/");дривер.манаге (). виндов (). макимизе ();
  • Иницирајте Фирефок управљачки програм.
  • Дођите до странице „гуру99“ која се састоји од ифраме-а.
  • Увећао прозор.

Корак 2)

инт сизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). сизе ();
  • Горњи код проналази укупан број ифрамеова присутних унутар странице помоћу назива ознаке 'ифраме'.

Корак 3)

Циљ овог корака био би проналажење индекса ифраме-а.

за (инт и = 0; и <= величина; и ++) {дривер.свитцхТо (). фраме (и);инт тотал = дривер.финдЕлементс (Би.кпатх ("хтмл / боди / а / имг")). сизе ();Систем.оут.принтлн (укупно);дривер.свитцхТо (). дефаултЦонтент ();}

Изнад „форлооп“ понавља све ифраме-ове на страници и исписује '1' ако је наш тражени ифраме пронађен, иначе враћа '0'.

Ево комплетног кода до корака 3:

публиц цласс ИндекОфИфраме {јавна статичка воид главна (Стринг [] аргс) {Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет ("хттп://демо.гуру99.цом/тест/гуру99хоме/");дривер.манаге (). виндов (). макимизе ();//дривер.манаге().тимеоутс().имплицитлиВаит(100, ТимеУнит.СЕЦОНДС);инт сизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). сизе ();за (инт и = 0; и <= величина; и ++) {дривер.свитцхТо (). фраме (и);инт тотал = дривер.финдЕлементс (Би.кпатх ("хтмл / боди / а / имг")). сизе ();Систем.оут.принтлн (укупно);дривер.свитцхТо (). дефаултЦонтент ();}}}

Извршите овај програм и излаз ће бити као испод:

Излаз:

100000
Потврдите излаз, можете пронаћи низове 0 и 1.
  • Где год да нађете у излазу „1“, то је индекс Фраме помоћу којег се елемент учитава.
  • С обзиром да је индекс ифраме почиње са '0' ако нађете 1 на 1 ст месту, онда је индекс 0.
  • Ако нађете 1 на 3. месту, индекс је 2.
Можемо коментарисати петљу фор, чим пронађемо индекс. Корак 4)
дривер.свитцхТо (). фраме (0); 
  • Једном када пронађете индекс елемента, можете пребацити оквир помоћу горње наредбе.
  • дривер.свитцхТо (). фраме (индекс пронађен из корака 3);
Корак 5)
дривер.финдЕлемент (Би.кпатх ("хтмл / боди / а / имг")). цлицк ();
  • Горњи код ће кликнути на ифраме или елемент у ифраме-у.
Дакле, комплетни код би био као испод:
јавна класа СвитцхТофраме {публиц статиц воид маин (Стринг [] аргс) баца НоСуцхЕлементЕкцептион {Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет ("хттп://демо.гуру99.цом/тест/гуру99хоме/");дривер.манаге (). виндов (). макимизе ();// инт сизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). сизе ();/ * за (инт и = 0; и <= величина; и ++) {дривер.свитцхТо (). фраме (и);инт тотал = дривер.финдЕлементс (Би.кпатх ("хтмл / боди / а / имг")). сизе ();Систем.оут.принтлн (укупно);дривер.свитцхТо (). дефаултЦонтент (); // враћање из ифраме-а} * /// Коментарисао је код за проналажење индекса елементадривер.свитцхТо (). фраме (0); // Пребацивање на оквирСистем.оут.принтлн ("******** Прешли смо на ифраме *******");дривер.финдЕлемент (Би.кпатх ("хтмл / боди / а / имг")). цлицк ();// Клик на елемент у складу са АдвертисементСистем.оут.принтлн ("********* Завршили смо ***************");}}
Излаз: Прегледник долази до странице која се састоји од горе наведеног ифраме-а и кликће на ифраме.

Концепт угнежђених оквира (оквири унутар оквира):

Претпоставимо да постоје два оквира један у другом, као што је приказано на слици испод, а наш захтев је штампање текста у спољном оквиру и унутрашњем оквиру. У случају угнежђених оквира,
  • Прво морамо прећи на спољни оквир било помоћу Индекса или ИД-а ифраме-а
  • Једном када пређемо на спољни оквир можемо пронаћи укупан број ифрамеова унутар спољног оквира и
  • Можемо се пребацити на унутрашњи оквир било којим од познатих метода.
При изласку из оквира морамо изаћи истим редоследом којим смо прво ушли из унутрашњег, а затим спољног оквира.
Угњежђени иФрамес у Селениум ВебДривер

Хтмл код за горе угнежђени оквир је као што је приказано доле.

Горњи ХТМЛ код јасно објашњава ифраме ознаку (истакнуту зеленом бојом) унутар друге ифраме ознаке, указујући на присуство угнежђених ифраме-ова.

Испод су кораци за прелазак на спољни оквир и штампање текста на спољним оквирима: Корак 1)

Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет ("Урл");дривер.манаге (). виндов (). макимизе ();дривер.манаге (). тимеоутс (). имплицитноВаит (2, ТимеУнит.СЕЦОНДС);инт сизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). сизе ();Систем.оут.принтлн ("Укупни оквири -" + величина);// исписује укупан број оквирадривер.свитцхТо (). фраме (0); // Пребацивање спољног оквираСистем.оут.принтлн (дривер.финдЕлемент (Би.кпатх ("кпатх спољног елемента")). ГетТект ()); 
  • Пребаците се на спољни оквир.
  • Штампа текст на спољни оквир.

Када пређемо на спољни оквир, требали бисмо знати да ли је унутрашњи оквир присутан унутар спољног оквира

Корак 2)

сизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). сизе ();// исписује укупан број оквира унутар спољног оквираСистем.оут.принтлн ("Укупни оквири -" + величина);
  • Проналази укупан број ифрамеова унутар спољног оквира.
  • Ако је величина пронађена '0', онда унутар оквира нема унутрашњег оквира.
Корак 3)
дривер.свитцхТо (). фраме (0); // Прелазак на унутарњи оквирСистем.оут.принтлн (дривер.финдЕлемент (Би.кпатх ("кпатх унутрашњег елемента")). ГетТект ());
  • Пребаците се на унутрашњи оквир
  • Штампа текст на унутрашњем оквиру.
Ево комплетног кода:
јавна класа ФрамесИнсидеФрамес {јавна статичка воид главна (Стринг [] аргс) {Управљачки програм за ВебДривер = нови ФирефокДривер ();дривер.гет ("Урл");дривер.манаге (). виндов (). макимизе ();дривер.манаге (). тимеоутс (). имплицитноВаит (2, ТимеУнит.СЕЦОНДС);инт сизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). сизе ();Систем.оут.принтлн ("Укупни оквири -" + величина);// исписује укупан број оквирадривер.свитцхТо (). фраме (0); // Пребацивање спољног оквираСистем.оут.принтлн (дривер.финдЕлемент (Би.кпатх ("кпатх спољног елемента")). ГетТект ());// Штампање текста у спољном оквирусизе = дривер.финдЕлементс (Би.тагНаме ("ифраме")). сизе ();// исписује укупан број оквира унутар спољног оквираСистем.оут.принтлн ("Укупни оквири -" + величина);дривер.свитцхТо (). фраме (0); // Прелазак на унутарњи оквирСистем.оут.принтлн (дривер.финдЕлемент (Би.кпатх ("кпатх унутрашњег елемента")). ГетТект ());// Штампање текста у унутрашњем оквирудривер.свитцхТо (). дефаултЦонтент ();}}
Излаз : Излаз горњег кода би исписао текст у унутрашњем и спољном оквиру.