Тестирование Kendo UI Grid с помощью Selenium/Geb

Я пытаюсь написать функциональный тест для Kendo UI Grid в своем приложении. В моем тесте я нажимаю кнопку, чтобы добавить новую строку в сетку, затем я хочу перемещаться по каждой из ячеек, присваивая значение полю ввода, содержащемуся в ячейке, по мере продвижения. Я могу сделать это «вручную» в браузере, и это работает без проблем. Однако, если я попытаюсь автоматизировать этот процесс с помощью Geb, значение, введенное в каждую ячейку, будет очищено, как только я перейду от поля ввода.

Одно наблюдение состоит в том, что когда я выполняю этот тест вручную, как только я ввожу значение во входные данные, я вижу черный треугольник (то есть значок «грязного» кендо) в верхнем левом углу ввода. Если я попытаюсь сделать это программно в своем тесте, я не увижу этот значок.

Я пробовал различные методы заполнения поля ввода, например:

1. productDescriptionField.find("input",0).value("some description")
2. productDescriptionField.find("input",0) << "some description"
3. (driver as JavascriptExecutor).executeScript("jQuery('.k-input').val('some description')")

где productDescriptionField — это селектор geb для поля ввода, показанного во фрагменте HTML ниже:

<td data-role="editable" class="k-edit-cell" id="grid_active_cell" role="gridcell">
    <input data-bind="value:description" name="description" class="k-input k-textbox" type="text">
</td>

Как я могу лучше имитировать то, что я, как человек, использующий веб-браузер, делаю при взаимодействии с сеткой кендо?


person rcgeorge23    schedule 23.04.2014    source источник


Ответы (1)


проблема видимо в том, что сетка не знает о программном изменении поля ввода. это происходит потому, что change-event сетки не срабатывает, если это делается программно. В связи с этим вам просто нужно инициировать событие изменения самостоятельно (изменить-кендо-html-поле ввода-программно).

В вашем случае ваш третий вариант должен быть изменен на следующее:

var changeValue = "$('.k-input').val('some description')";
var triggerChange = "$('.k-input').change();"
(driver as JavascriptExecutor).executeScript(changeValue + "; " + triggerChange)
person Mario David    schedule 23.04.2014
comment
Выглядит многообещающе - завтра попробую. - person rcgeorge23; 24.04.2014