Всем привет.
Начинаю знакомство с автоматизацией и собственно с Java, поэтому заранее сорри возможно за простой вопрос.
Вывел список юзеров таким образом
String string = new String( "//*[@id='main']/div/div/div/div[2]/div[1]/div/table/tbody/tr[2]/td[2]"); for( long i = 2; i < 9; ++i){ WebElement table = driver.findElement(By.xpath(string)); String value = table.getText(); System.out.println(value); string = string.replace("tr["+String.valueOf(i)+"]", "tr["+String.valueOf(++i) + "]"); --i;
Вывелло список:
Surname Name
Surname1 Name 1
и так строк.
Мне нужно выбрать первое значение и по нему кликнуть и запомнить обязательно данные о юзере потому что потом я буду проверять его наличие.
Плиз хелп .....
polusok
(Mykhailo Poliarush)
September 26, 2012, 9:18am
#2
1. в чем суть вопроса? что не получается?
2. приложите прирочный html код, который вы тестируете
<tbody >
<tr class ="data salaryreview-container " data-val-id ="8390 " >
<td class ="align-center review-status " >
<td class ="align-left bold employee " data-val-employeeid ="20 " > Zaletskyy Demyan </td >
<td class ="align-center percent " >
<td class ="align-center amount " data-val-currentamount ="550 " data-val-amount ="550 " >
<td class ="align-center effectivefrom " data-val-value ="15.09.2012 " >
<td class ="align-center startdate " > 08.09.2008 </td >
<td class ="align-center bold superior " data-val-superiorid ="159 " > Mykhashula Andriy </td >
<td class ="align-center comment-row " >
<td class ="align-center review-request " >
<td class ="align-center applydate " data-val-value ="" > Not applied </td >
</tr >
<tr class ="data salaryreview-container " data-val-id ="8730 " >
<tr class ="data salaryreview-container " data-val-id ="8358 " >
<tr class ="data salaryreview-container " data-val-id ="8702 " >
<tr class ="data salaryreview-container " data-val-id ="8810 " >
Вот код ...
Мне нужно сделать список из имен и фамилий(подчеркнул) и потом выбрать первое значение и удалить его - после чего проверить наличие его на странице.
Удаление можно заменить Кликом - я потом поменяю(Главное как доступиться к нему)??
Пока что я сделал это так:
String string = new String( "//*[@id='main']/div/div/div/div[2]/div[1]/div/table/tbody/tr[2]/td[2]"); for( long i = 2; i < 9;){ WebElement table = driver.findElement(By.xpath(string)); String value = table.getText(); WebElement select = driver.findElement(By.xpath("//*[@id='main']/div/div/div/div[2]/div[1]/div/table/tbody/tr[2]/td[2]")); WebElement option = select.findElement(By.xpath("//*[@id='main']/div/div/div/div[2]/div[1]/div/table/tbody/tr[2]/td[2][contains(text(),'" + value + "')]")); WebElement X = option.findElement(By.xpath("//*[@id='main']//tr[2]/td[11]/button")); X.click(); assertFalse("Salary Interviewer hadn't been deleted " , select.findElement(By.xpath("//*[@id='main']/div/div/div/div[2]/div[1]/div/table/tbody/tr[2]/td[2][contains(text(),'" + value + "')]"))); break;
Но это только с Одним Элементом..
А вот построить корректно список и вытянуть значение у меня не выходит.....
qw1564
(qw1564)
September 27, 2012, 5:35am
#5
если я правильно понял задачу должны помочь вот такие xPath, которые опираются на классы:
private static final String[] USER_NAME_CELL = "//tr[contains(@class,'data salaryreview-container')]%s//td[contains(@class, 'align-center bold superior')];
private static final String[] USER_NAME_CELL_SPECIFIED = String.format(USER_NAME_CELL,"") + "[contains(text(), '%s')]";
дальше достать userName по локатору String.format(USER_NAME_CELL, "[1]") для первого элемента, String.format(USER_NAME_CELL, "[" + i + "]") для i-го
а кликнуть по локатору String.format(USER_NAME_CELL_SPECIFIED, userName) - я так понимаю что поле с именем уникально
Большое спасибо. Не было возможности ответить. Попробую!