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

Как кликнуть по элементу содержащему текст из списка. Java. Webdriver


(Michael Leginchenko) #1

Всем привет.

Начинаю знакомство с автоматизацией и собственно с 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

и так строк.

 

Мне нужно выбрать первое значение и по нему кликнуть и запомнить обязательно данные о юзере потому что потом я буду проверять его наличие.

 

Плиз хелп .....


(Mykhailo Poliarush) #2

1. в чем суть вопроса? что не получается?

2. приложите прирочный html код, который вы тестируете


(Michael Leginchenko) #3

<tbody>

<tr class="header">
 <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>
                                      <td class="hide">
</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">
 
Вот код ...
Мне нужно сделать список из имен и фамилий(подчеркнул) и потом выбрать первое значение и удалить его - после чего проверить наличие его на странице.
Удаление можно заменить Кликом - я потом поменяю(Главное как доступиться к нему)??
 

(Michael Leginchenko) #4

Пока что я сделал это так:

    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) #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) - я так понимаю что поле с именем уникально


(Michael Leginchenko) #6

Большое спасибо. Не было возможности ответить. Попробую!