Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият.
Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание.
Използваме бисквитки и за измерване на маркетинговите ни усилия.
Ами използвам го и намирам това - <div class="userName"> Камен Дамянов </div>. а в IDE приставката не ми дава value, както на username и password. Може и да бъркам някъде де...Или пък да е, защото не разпознава кирилица?
IDE приставката трябва да е пусната, за да ти показва това. Ако не ти показва нищо, има в контекстното меню Show available commands. Иначе, да, това е елементът - " <div class="userName"> Камен Дамянов </div>", който както може би сам забелязваш никъде няма атрибут "id", нито стойност "validFullName" :-)
Алтернатива, която се води стабилна ед а се ползва xpath. Този елемент можеш, ако имаш приставката Firebug (т.е. от контекстното меню ти се показват и Inspect element и Inspect element with firebug, и избереш второто) когато го намериш, да му кликнеш десен бутон и copy xpath и да го намериш по xpath, вместо по id.
Хмм, да, май стана като го направих с xpath, макар че при копирането ми го изкара по друг начин. И махнах това, за да мине тестът успешно най-после:
assertEquals("/html/body/div[1]/div/div[4]/div/div[4]/div/div[4]/div/div[2]/div/div[2]/div[1]/div[1]",fullName.getText());
Това не е нормален assertion. getText() се очаква да върне името ти, а не xpath-a.
Нека започнем отначало:
Една страница се състои от много елементи (тагове) като например <p>, <div>, <input>, <span> и т.н.
Всички тези тагове могат да имат различни селектори (атрибути) - id, class, name... например <input name="first-name">; <div id="header">, <div class="red-button">
ID атрибутът е уникален, гарантира ни, че може да има само един таг с това ID в страницата
Name и Class атрибутите не са уникални, може да имаме много елементи, които са червени бутони (red-button) например.
Тези елементи могат да имат още атрибути, стойност ако са полета, текст между тях и т.н.
Например три елемента от страницата
<div id="header" class="big-red-block"> some_header </div>
<a class="red-button">click me to login</div>
<a class="red-button">click me to register<div>
В момента този елемент <div id="header" class="big-red-block"> some_header </div> има атрибути id, което е header и class, който е big-red-block и текст между него, който е some_header
За да намерим този елемент е хубаво да използваме най-конкретния селектор. За щастие ID е уникален и можем да разчитаме на него. Намираме го по ID което се казва header
WebElement imeNaPromelivaKoetoNqmaNishtoObshtoSysSelektora = driver.findElement(By.id("header"));
Искаме да видим какъв е класът са този елемент:
imeNaPromelivaKoetoNqmaNishtoObshtoSysSelektora.getAttribute("class");
Искаме да видим какво има между таговете (текста)
imeNaPromelivaKoetoNqmaNishtoObshtoSysSelektora.getText();
Другите два елемента нямат уникален селектор. Имат клас. И двата са DIV и не е оферта да използваме By.className() защото ще е трудно да нацелим кой от двата бутона ще хване така. Тогава използваме xpath. Копираме xpath-а и казваме
WebElement nqkakvaDrugaPromenliva = driver.findElement(By.xpath("x-path-a-koito-sme-kopirali"));
Трябва ни теста да мине, само ако текстът на този елемент е "click me to login".
НЕ слагаме xpath-а в assert-а, а това което assert-ваме (assert означава твърдение). Какво твърдим ние? Твърдим, че текстът на елемента е "click me to login". Как взимаме текста? С getText(). От ляво на assert-а се слага това, което е expected. Отдясно - това, което е актуалното.
assertEquals("click me to login", nqkakvaDrugaPromenliva.getText());