handling web tables frames
В последния урок на Selenium WebDriver научихме различни често и рутинно използвани команди на Selenium WebDriver включително важни теми като работа с iframe и изключения в скриптове на Selenium.
Продължаваме напред в нашия изчерпателен поредица от уроци по Селен , в този урок бихме обсъдили обработка на уеб таблици, iframe и динамични елементи които са съществена част от всеки уеб проект.
Този урок се състои от 3 различни теми и механизмите им за работа в скрипт за селен.
- Уеб таблици / HTML таблици
- Рамки
- Динамични елементи
Какво ще научите:
# 1) Уеб таблици / HTML таблици
В този модул ще научим за уеб таблиците или HTML таблиците в уеб страница, наличните тагове в HTML и как да обработваме динамичните уеб таблици.
Уеб таблиците са основно група от елементи, които логично се съхраняват във формат на редове и колони. Използва се за организиране на подобна информация на уеб страница.
По-долу е даден пример за Html таблица:
По-долу е фрагментът от HTML структура на HTML таблица:
По-долу таговете обикновено се дефинират в HTML таблици:
1.’table ’дефинира HTML таблица.
2.'tbody ’маркерът определя контейнер за редове и колони.
3.'tr ’дефинира редове в HTML таблица.
4.'td ’/’ th ’дефинира колоната на HTML таблица.
Намерете подробностите за уеб таблица:
Има много начини да се справим с уеб таблица.
въпроси и отговори за интервю за база данни pdf
Подход №1 :
По-долу е xpath на една от клетките в html таблицата. Да кажем „собствено име“
// div (@ id = ’main’) / table (1) / tbody / tr (1) / th (1)
tr (1) определя първия ред, а th (1) определя първата колона.
Ако определен брой редове и колони са винаги постоянни, да речем, че нашата HTML таблица винаги ще има 5 реда и 3 колони.
for(int numberOfRows=1; numberOfRows<=5; numberOfRows++) { for(int numberOfCol=1; numberOfCol <=3; numberOfCol++) { System.out.println(driver.findElement(By.xpath (“//div(@id='main')/table(1)/tbody/tr (“+numberOfRows+”)/th(“+numberOfCol+”)”))); } }
С изключение на номера на редове и колони, всеки компонент на XPath остава същият. Така че можете да итерирате, като използвате „for loop“ за всеки ред и колона, както е споменато по-горе.
Подход №2 :
Първият подход е най-подходящ за масата, която не променя размерите си и винаги остава същата. Горният подход няма да бъде идеалното решение за динамично променящи се уеб таблици.
Да вземем за пример таблицата над HTML:
WebElement htmltable=driver.findElement(By.xpath('//*(@id='main')/table(1)/tbody')); List rows=htmltable.findElements(By.tagName('tr')); for(int rnum=0;rnum Етап 1 : Първо вземете цялата HTML таблица и я съхранявайте в променлива ‘htmltable’ от тип web element.
Стъпка 2 : Вземете всички редове с име на маркер ‘tr’ и съхранявайте всички елементи в списък с уеб елементи. Сега всички елементи с етикет „tr“ се съхраняват в списък „редове“.
Стъпка 3 : Прегледайте всеки ред и вземете списъка с елементи с етикет ‘Та’. ‘Редове.get (0)’ ще даде първи ред и ‘FindElements (By.tagName ( „Ти“ )) ' ще даде списък с колони за реда.
Стъпка 4 : Итерация с използване ‘Колони.getsize ()’ и да получите подробности за всяка клетка.
Забележка : Горният подход ще бъде най-подходящ, ако размерите на таблицата се променят динамично.
Това завършва темата как да боравим с уеб таблици в селен. След това ще научим за обработката на елемент вътре в рамка.
# 2) Рамки
В този раздел ще научим за кадрите в уеб страница и как да ги идентифицираме. Също така ще разберем как можем да се справим с рамка в Selenium WebDriver.
Много разработчици обичат да поставят елементи вътре в рамка. Рамката е точно като контейнер, където малко елементи могат да бъдат групирани.
Идентификация на рамка:
Различни начини да разберете дали елементът присъства вътре в рамка или не
# 1 . Щракнете с десния бутон върху елемента. Проверете дали опцията „Тази рамка“ е налична. Ако опцията Тази рамка е налична, това означава, че елементът е вътре в рамка.
# две . Вижте източника на страницата на уеб страницата и проверете дали има наличен маркер за „iframe“.
най-добрият софтуер за наблюдение на температурата на процесора и процесора

Проверете Брой кадри в уеб страница :
Всички рамки имат името на маркера като „iframe“.
Списък frameList = driver.findElements (By.tagName ( 'Iframe' ));
System.out.println (frameList.size ());
В горния пример : frameList ще има целия списък с рамки и frameList.size () ще даде броя на кадрите.
Работа с елемент вътре в рамката:
Ако елемент е вътре в рамка, тогава контролът трябва първо да премине към рамка и след това да започне да работи върху елементите.
Етап 1 : За да превключите вътре в рамка:
driver.switchTo (). frame (1); // предаване на номер на кадър като параметър.
или
driver.switchTo (). frame (“frame name”); // предаване на името на кадъра като параметър.
или
driver.switchTo (). frame (“xpath of the frame”);
Стъпка 2 : След превключване в рамката селенът ще може да работи върху елементи.
driver.findElement ( // **************************************);
driver.findElement ( // **************************************);
Тук сме научили как да боравим с елемент вътре в рамката и по-нататък ще разгледаме различните начини за боравене с динамичен елемент.
# 3) Динамични елементи
В този раздел ще научим различни начини за обработка на динамичен елемент и конструиране на общ Xpath.
В няколко сценария атрибутите на елементите се променят динамично. Може да е „id“, „name“ и т.н.
как да отворя SWF файл на Windows 7
Пример : да кажем, че „id“ на поле за потребителско име е „username_123“ и XPath ще бъде
// * (@ id = ’потребителско име_123 ′) но когато отворите страницата отново, полето „id“ на „username“ може да се е променило и новата стойност може да бъде „username_234“.
В този случай тестът ще се провали, тъй като селенът не можа да намери XPath, който сте преминали по-рано, тъй като идентификаторът на полето се е променил на друга стойност.
Има много подходи в зависимост от вида на проблема:
Тип проблем 1: Ако част от стойността на атрибута се промени .
Пример : Както в горния пример, стойността на id се променя, но малко полета остават постоянни.
„Потребителско име_123“ се промени на „потребителско име_234“, но „потребителското име“ винаги оставаше постоянно.
Можете да конструирате xpath както по-долу:
driver.findElement (By.xpath ( „// * (съдържа (@ id,‘ потребителско име ’))“ )). sendKeys ( „Потребителско име“ );
шофьор . findElement (By.xpath ( „// * (започва-с (@ id,‘ потребител ’))“ )). sendKeys ( „Потребителско име“ );
'съдържа' е метод на Java, който проверява дали id съдържа потребителското име на подниза.
започва с() проверява дали някой атрибут започва с „потребител“.
Тип проблем 2: Ако цялата стойност на атрибута се променя динамично.
Отново, в този случай може да има различни подходи:
Например : ако идентификаторът на полето за вход се промени динамично и няма постоянна стойност, която да се използва, съдържа метод.
Решение : Използване на sendKeys.
Selenium предоставя различен API за използване на функционални клавиши. Например клавиш за раздели, клавиши за въвеждане, F5 и т.н.
Етап 1 : Въведете паролата
driver.findElement (By.id ( „Парола“ )). sendKeys („парола“));
Стъпка 2 : Използвайте ключови функции за навигация до елемент.
driver.findElement (By.id ( „Парола“ )). sendKeys (Ключове. ENTER ));
или
driver.findElement (By.id ( „Парола“ )). sendKeys (Ключове. РАЗДЕЛ ));
Заключение
Уеб таблици, рамки и динамични елементи са съществена част от всеки уеб проект. Винаги е желателно да се пише ефективен код за обработка на уеб таблици и динамични елементи.
Разбиране на конструкцията на общ XPath, което е много полезно при работа с динамични елементи. В случай на рамка, вашият скрипт трябва да превключи рамката и след това да работи върху елемента.
Следващ урок # 19 : В следващия урок на Selenium ще научим за типовете изключения и как да се справя с изключенията в java в скриптове на Selenium.
Моля, публикувайте вашите заявки, свързани с уеб таблици, рамки и обработка на динамичен елемент, ако имате такива.
Препоръчително четене
- Как да намерите елементите в браузърите Chrome и IE за изграждане на скриптове за селен - Урок № 7 за селен
- Използване на Selenium Select Class за обработка на падащи елементи на уеб страница - Урок № 13 за Selenium
- Локатори на селен: Идентифициране на уеб елементи с помощта на XPath в селен (примери)
- Как да използвам CSS Selector за идентифициране на уеб елементи за скриптове за селен - Урок за селен # 6
- Проверете видимостта на уеб елементи, като използвате различни типове команди WebDriver - Урок № 14 за селен
- Урок за краставици селен: Интеграция на краставица Java Selenium WebDriver
- Интеграция на селен с JMeter
- Работа с iFrames с помощта на метод Selenium WebDriver switchTo ()