Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Atanasov_88 avatar Atanasov_88 39 Точки

[QA Fundamentals] Lab Selenium - problem 4

Здравейте, имам проблем с втората част на решението на задача 4 от лаба. След като изпълня всичко, както трябва пак ми гърми кода. Пробвах няколко варианта, но вероятно бъркам при въвеждането на последния webelement - full name. Ето решението ми ТУК! 

Малко помощ няма да е излишна :)

 

Тагове:
1
QA Fundamentals
RoYaL avatar RoYaL Trainer 6849 Точки

Елементът в страницата не е с ID "validFullName". Не използваш ли inspect element или IDE приставката, за да видиш съответния селектор?

0
Atanasov_88 avatar Atanasov_88 39 Точки

Ами използвам го и намирам това - <div class="userName"> Камен Дамянов </div>. а в IDE приставката не ми дава value, както на username и password. Може и да бъркам някъде де...Или пък да е, защото не разпознава кирилица?

0
RoYaL avatar RoYaL Trainer 6849 Точки

IDE приставката трябва да е пусната, за да ти показва това. Ако не ти показва нищо, има в контекстното меню Show available commands. Иначе, да, това е елементът -  " <div class="userName"> Камен Дамянов </div>", който както може би сам забелязваш никъде няма атрибут "id", нито стойност "validFullName" :-)

Алтернатива, която се води стабилна ед а се ползва xpath. Този елемент можеш, ако имаш приставката Firebug (т.е. от контекстното меню ти се показват и Inspect element и Inspect element with firebug, и избереш второто) когато го намериш, да му кликнеш десен бутон и copy xpath и да го намериш по xpath, вместо по id.

2
Atanasov_88 avatar Atanasov_88 39 Точки

Хмм, да, май стана като го направих с 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());
0
RoYaL avatar RoYaL Trainer 6849 Точки

Това не е нормален 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());

 

4
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.