Има моменти, когато трябва да получим достъп до елементи (обикновено текстове), които са в HTML таблиците. Много рядко обаче уеб дизайнерът предоставя атрибут id или name на определена клетка в таблицата. Следователно не можем да използваме обичайните методи като "By.id ()", "By.name ()" или "By.cssSelector ()". В този случай най-надеждният вариант е достъпът до тях чрез метода "By.xpath ()".
В този урок ще научите -
Как да напиша XPath за таблица
Достъп до вложени таблици
Използване на атрибути като предикати
Преки пътища: Използвайте Inspect Element за достъп до таблици в селен
Как да напиша XPath за таблица
Помислете за HTML кода по-долу.
Ще използваме XPath, за да получим вътрешния текст на клетката, съдържащ текста „четвърта клетка“.
Стъпка 1 - Задайте родителския елемент (таблица)
Локаторите на XPath в WebDriver винаги започват с двойна наклонена черта "//" и след това последвана от родителския елемент . Тъй като имаме работа с таблици, родителският елемент винаги трябва да е тагът
. Следователно първата част от нашия локатор XPath трябва да започне с "// таблица".
Стъпка 2 - Добавете дъщерните елементи
Елементът непосредствено под
е
, така че можем да кажем, че
е "детето" на
. И също така,
е "родителят" на
. Всички дъщерни елементи в XPath са поставени вдясно от своя родителски елемент, разделени с една наклонена черта "/" като кода, показан по-долу.
Стъпка 3 - Добавяне на предикати
Елементът
съдържа два маркера
. Сега можем да кажем, че тези два маркера
са "деца" на
. Следователно можем да кажем, че
е родител и на двата елемента
.
Друго нещо, което можем да заключим, е, че двата елемента
са братя и сестри. Братя и сестри се отнасят до дъщерни елементи със същия родител .
За да стигнем до
, до който желаем достъп (този с текст "четвърта клетка"), първо трябва да осъществим достъп до втория
, а не до първия. Ако просто напишем "// table / tbody / tr", тогава ще имаме достъп до първия
таг.
И така, как да осъществим достъп до втория
тогава? Отговорът на това е да се използват предикати .
Предикатите са числа или HTML атрибути, затворени в двойка квадратни скоби "[]", които отличават дъщерния елемент от неговите братя и сестри . Тъй като
, до който имаме нужда, е вторият, ще използваме "[2]" като предикат.
Ако не използваме предикат, XPath ще осъществи достъп до първия брат или сестра. Следователно можем да осъществим достъп до първия
, използвайки някой от тези XPath кодове.
Стъпка 4 - Добавете следващите дъщерни елементи, като използвате подходящите предикати
Следващият елемент, до който трябва да получим достъп, е вторият
. Прилагайки принципите, които сме научили от стъпки 2 и 3, ние ще финализираме нашия XPath код, като този, показан по-долу.
Сега, когато разполагаме с правилния локатор на XPath, вече можем да осъществим достъп до клетката, която искахме, и да получим нейния вътрешен текст, използвайки кода по-долу. Предполага се, че сте запазили HTML кода по-горе като "newhtml.html" във вашия C диск.
Същите принципи, разгледани по-горе, се прилагат за вложени таблици. Вложените таблици са таблици, разположени в друга таблица . Пример е показан по-долу.
За достъп до клетката с текст "4-5-6" с помощта на "// родител / дете" и предикатни концепции от предишния раздел, трябва да можем да измислим XPath кода по-долу.
Кодът на WebDriver по-долу трябва да може да извлече вътрешния текст на клетката, до която имаме достъп.
Изходът по-долу потвърждава, че вътрешната таблица е била успешно осъществена.
Използване на атрибути като предикати
Ако елементът е написан дълбоко в HTML кода, така че числото, което да се използва за предиката, е много трудно да се определи, вместо това можем да използваме уникалния атрибут на този елемент.
В примера по-долу клетката „Ню Йорк до Чикаго“ се намира дълбоко в HTML кода на началната страница на Mercury Tours.
В този случай можем да използваме уникалния атрибут на таблицата (width = "270") като предикат. Атрибутите се използват като предикати, като се добавят с префикс със символа @ . В горния пример клетката "Ню Йорк до Чикаго" се намира в първата
на четвъртата
и затова нашият XPath трябва да бъде както е показано по-долу.
Не забравяйте, че когато поставяме XPath кода в Java, трябва да използваме наклонената черта назад \ "за двойните кавички от двете страни на" 270 ", така че аргументът на низа на By.xpath () да не бъде прекратен преждевременно .
Вече сме готови за достъп до тази клетка, като използваме кода по-долу.
Преки пътища: Използвайте Inspect Element за достъп до таблици в селен
Ако номерът или атрибутът на елемент е изключително труден или невъзможен за получаване, най-бързият начин за генериране на XPath кода е използването на Inspect Element.
Помислете за примера по-долу от началната страница на Mercury Tours.
Етап 1
Използвайте Firebug, за да получите XPath кода.
Стъпка 2
Потърсете първия родителски елемент "таблица" и изтрийте всичко вляво от него.
Стъпка 3
Префиксирайте останалата част от кода с двойна наклонена черта "//" и го копирайте във вашия код на WebDriver.
Кодът на WebDriver по-долу ще може успешно да извлече вътрешния текст на елемента, до който имаме достъп.
By.xpath () обикновено се използва за достъп до елементи на таблица.
Ако елементът е написан дълбоко в HTML кода, така че числото, което да се използва за предиката, е много трудно да се определи, вместо това можем да използваме уникалния атрибут на този елемент.
Атрибутите се използват като предикати, като се добавят с префикс със символа @.
Използвайте Inspect Element за достъп до таблици в селен