Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

проблема с проверкой записей в строке


(Lenuzza) #1

Добрый день!

снова нужны советы опытных автоматизаторов!

цель теста - проверить наличие записи в таблице в одной строке.

например, есть такая таблица с данными. строки могут быть в хаотичном порядке. нужно проверить, что запись name2 существует, и в этой же строке находится и user2, и info2. все элементы name*, user* и info*  - ссылки. 

1 name1 user1 info1
2 name2 user2 info2
3 name3 user3 info3

как найти элемент "name2" я нашла >> assertElementPresent xpath=(//a[contains( text(),'dom3.net')])

а вот как связать поиск для всех нужных элементов - вот тут и возникла проблема.

поделитесь опытом! буду очень признательна!


(user12) #2

Находишь строку, где находится name2

Находишь номер строки, т.е.2

При поиске user2 и info2 в xpath вставляешь номер строки

Т.е. когда взял данные, то просто проверяешь, user2 начинаетя с "user", а info2 с "info"

Все просто

Этот способ хорош, если маленькая таблица, если же таблица на 100-1000 строк тогда уже надо в БД лезть или использовать поиск

 

 

 


(user12) #3

мда, сложно я расписал

Сейчас нет особо времени, если в Понедельник буду свободен, то более подробно распишу

 

И что ты используешь:

Selenium IDE или Selenium 2 ???


(Alexander Petrovich) #4

Дайте html код этой вашей таблицы. Напишу точно :)


(Mykhailo Poliarush) #5

xpath axes вам в помощь preceding-sibling и following-sibling

ну и ссылка на видео http://automated-testing.info/trainings/video-kak-pisat-lokatory-dlya-selenium-webdriver/report


(Mykhailo Poliarush) #6

да если дадите html код страницы, то поможем написать конкретный xpath


(Lenuzza) #7

вот html этой таблицы

 

<tr class="">
<td class="noBorder">
<td class="line">
<div>
<a class="thickbox" href="../asp/domedit.asp?d=domainname1&TB_iframe=true&height=480&width=650">domainname1</a>
</div>
</td>
<td class="line">
<div>
<a class="thickbox" href="../asp/userinfo.asp?pop=up&uid=user1&KeepThis=true&TB_iframe=true&height=480&width=650">user1</a>
<a class="anchorLink" onclick="FilterByUser('user1',1);">
</div>
</td>
<td class="line">
<a id="domainListRepeater_lb_renew_1" class="thickbox" href="DomainRenew.aspx?domainname=domainname1&domainuser=user1&domainid=3792&KeepThis=true&TB_iframe=true&height=450&width=750">Renew</a>
<div class="line1 noWrap">11/6/2011 7:06:22 PM</div>
</td>
</tr>
 
в последней колонке два значения (ссылка, дата).
за видео спасибо! буду смотреть и разбираться
 

(Mykhailo Poliarush) #8

где-то вот так должно работать

//a[text()="user1"]/../../following-sibling::*//a

//a[text()="user1"]/../../preceding-sibling::*//a


(Lenuzza) #9

к сожалению, 

 

//a[text()="user1"]/../../following-sibling::*//a

//a[text()="user1"]/../../preceding-sibling::*//a

не прокатило.

 

а вот эта конструкция - рабочая. 

xpath=//a[contains( text(), 'name1')]/../../following-sibling::*//a[contains( text(), 'user1')]/../../following-sibling::*//a[contains( text(), 'Renew')]

 

только как теперь сюда засунуть переменную для name1?

 объявила ее в начале как  storeExpression > name1 > name

вариации на тему //a[contains( text(), storedVars['name'])] - не работает.

подскажите, как правильно

 


(Taras) #10

обговаривалось уже

нужно обертку клас для таблици написать

тогда будете парсить ее в матрицу просто и дергать обьект


(Lenuzza) #11

а можете чуть подробнее об этом рассказать, поскольку первый раз сталкиваюсь


(Taras) #12

http://automated-testing.info/forum/poisk-elementa-v-tablice

сдесь смотрите)


(Mykhailo Poliarush) #13

в selenium ide обращение к переменной делается вот так вот ${name}


(Mykhailo Poliarush) #14

да я свой вариант не проверял, там могу быть ошибки :)

может быть ваш вариант и рабочий но выглядит очень избыточным

хотя, с другой стороны если работает, то это уже плюс :)