2016-03-08 1 views
3

Я хочу ввести значения в группу текстовых полей, используя селен в таблице, как показано ниже. enter image description hereКак ввести значения в группу текстовых полей в таблице с использованием селена

Я попытался таким образом, но это не сработало и поднять InvalidElementStateException.

List<WebElement> marks = driver.findElements(By.xpath(".//table/tbody/tr/td/input")); 
    for (WebElement mark : marks) { 
    mark.sendKeys("10"); 
    } 

EDIT: В моем HTML, ТД содержит дополнительные скрытые входы также.

<tbody> 
<tr class="text-center student-mark" id="1"> 
    <td class="text-left">Name</td> 

    <td class="activityTableBody hidden" > 
     <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_classTest" 
       id="55630af2a0c4655a1ce06fcd_classTest_556da05c699e70287ca203b0_classTest" value="0"> 
    </td> 

    <td class="activityTableBody" > 
     <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity1" 
       id="55630af2a0c4655a1ce06fcd_activity1_556da05c699e70287ca203b0_Task-1" value="0"> 
    </td> 

    <td class="activityTableBody" > 
     <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity2" 
       id="55630af2a0c4655a1ce06fcd_activity2_556da05c699e70287ca203b0_Task-1" value="0"> 
    </td> 

    <td class="activityTableBody"> 
     <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity3" 
       id="55630af2a0c4655a1ce06fcd_activity3_556da05c699e70287ca203b0_Task-1" value="0"> 
    </td> 

    <td class="activityTableBody" > 
     <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity4" 
       id="55630af2a0c4655a1ce06fcd_activity4_556da05c699e70287ca203b0_Task-1" value="0"> 
    </td> 

    <td class="activityTableBody" > 
     <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_activity5" 
       id="55630af2a0c4655a1ce06fcd_activity5_556da05c699e70287ca203b0_Task-1" value="0"> 
    </td> 

    <td class="tableBodySA hidden" > 
     <input type="text" class="table-input 55630af2a0c4655a1ce06fcd_markSA" value="0"> 
    </td> 
    <td class="tableBodySA hidden" *emphasized text*> 
     <input type="text" class="table-input saMark 55630af2a0c4655a1ce06fcd_markSA100" width="20%" value="0"> 
    </td> 

</tr> 
. 
. 
</tbody> 
+0

пожалуйста, поделитесь своим кодом HTML .. пожалуйста, опишите больше, в какой coloum вы хотите ввести день .. во всех coloumns? –

+0

@ShubhamJain На самом деле я хочу ввести значение во все текстовые поля в таблице, а не в конкретный столбец. – azhar

+0

ваш код кажется прекрасным .. там должна быть проблема с вашим локатором .. Вот почему я попросил HTML-код ... –

ответ

1

Вы должны выбрать input в td, который не имеет класс 'скрытый'

List<WebElement> marks = driver.findElements(By.xpath(
       ".//table/tbody/tr/td[contains(@class ,'activityTableBody') and not(contains (@class ,'hidden'))]/input")); 
     for (WebElement mark : marks) { 
      Integer studentMark = i++ % 6; 
      System.out.println(studentMark); 
      mark.click(); 
      mark.sendKeys(Integer.toString(studentMark)); 
     } 
0

Этот рабочий пример (из HTML вы provied) заполняет все видимые ячейки:

WebDriver driver = new FirefoxDriver(); 
driver.get("https://fiddle.jshell.net/40vr7top/show"); 
driver.switchTo().frame(0); 

List<WebElement> inputs = driver.findElements(By.cssSelector("td.activityTableBody input")); 
for (WebElement input : inputs) { 
    input.clear(); 
    input.sendKeys("99"); 
} 
+0

Это не сработало и, пожалуйста, см. Мой отредактированный вопрос – azhar

+0

Вам следует указать источник страницы или воспроизводимый пример. Недостаточно информации, чтобы дать ответ, который будет работать сразу. –

+0

Пожалуйста, просмотрите отредактированный вопрос с помощью html – azhar

Смежные вопросы