Вставить значение в div

У меня HTML + Angular выглядит так:

<div ng-repeat="(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name" class="ui-grid-cell ng-scope ui-grid-coluiGrid-15T" ng-class="{ 'ui-grid-row-header-cell': col.isRowHeader }" ui-grid-cell="">
    <div class="ui-grid-cell-contents ng-binding ng-scope ui-grid-cell-focus" tabindex="-1">33</div>
</div>

и это выглядит так:

введите здесь описание изображения

И мне нужно добавить / изменить значение, которое находится между div (в этом примере это номер 33). Как бы я ни пытался отправить ключ, это не помогает. Я дважды проверяю правильность моего XPATH, но все же...

var pkValue = "11";
element(by.xpath('(/html/body/div[2]/div/div/div[2]/form/fieldset[2]/div[2]/div/div/div[2]/div[2]/div/div/div/div[3]/div)')).sendKeys(pkValue); 

Есть ли что-то, что мне не хватает, или мне нужно сделать что-то еще для этого?


person Andurit    schedule 25.02.2015    source источник
comment
Вместо того, чтобы получать элемент через XPath, не могли бы вы использовать $index для обработки строки и обновления напрямую?   -  person HockeyJ    schedule 25.02.2015
comment
Привет, HockeyJ, позвольте мне поблагодарить вас за ваш ответ, к сожалению, я уже пробовал другие способы, чем xpath , я считаю, что проблема заключается в том, как коснуться и отредактировать это значение.   -  person Andurit    schedule 25.02.2015
comment
Извините, я не заметил, что у вас в тегах был Транспортир.   -  person HockeyJ    schedule 25.02.2015
comment
Все в порядке :), все равно спасибо, что пытаетесь мне помочь   -  person Andurit    schedule 25.02.2015


Ответы (1)


Вам нужно установить innerHTML с помощью executeScript():

var elm = element(by.xpath('(/html/body/div[2]/div/div/div[2]/form/fieldset[2]/div[2]/div/div/div[2]/div[2]/div/div/div/div[3]/div)'));

browser.executeScript("arguments[0].innerHTML = '11';", elm.getWebElement());

Кроме того, подумайте об изменении используемого вами xpath - этот (абсолютный, начинающийся с корневого элемента html) очень хрупок.

person alecxe    schedule 25.02.2015
comment
Привет alexxe, спасибо за ваш ответ,. Обычно я стараюсь не использовать абсолютный XPATH, но здесь, чтобы убедиться, что он правильный, я копирую его из браузера. В любом случае, после того, как я попробую это, я получаю сообщение об ошибке: RangeError: превышен максимальный размер стека вызовов. Любая идея? - person Andurit; 25.02.2015
comment
@Andurit хорошо, какой транспортир и браузер и версию браузера вы используете? - person alecxe; 25.02.2015
comment
Protractor = новейший (я просто загружаю все с git около 2 недель назад) Браузер: Google Chrome Verze 39.0.2171.71 m - person Andurit; 25.02.2015
comment
@ Андурит действительно не уверен, в чем проблема на данный момент. Находится ли сайт в сети (чтобы я мог протестировать его и воспроизвести проблему)? Кроме того, попробуйте тот же тест с Firefox, пожалуйста (используйте версию 34.0.5). Спасибо. - person alecxe; 25.02.2015
comment
Сайт в сети, но с ограниченным доступом из мира, и я ничего не могу сделать с этим банкоматом :( После проверки на FF я получаю ту же ошибку. Я знаю, что трудно помочь, если вы не видите сайт, но любой удар, который может помочь? - person Andurit; 25.02.2015
comment
@Andurit хорошо, я понимаю, пожалуйста, предоставьте полную трассировку ошибки, которую вы сейчас получаете. Спасибо. - person alecxe; 25.02.2015
comment
Журнал слишком длинный, поэтому, к сожалению, я не могу добавить его в комментарий, поэтому вот он: pastebin.com/UZNqrqJ9 - person Andurit; 25.02.2015
comment
@Andurit, спасибо за трассировку - вы уверены, что она не работает в строке executeScript? Спасибо. - person alecxe; 25.02.2015
comment
Мне нравится, как вы думаете, @alecxe, я думал так же и прокомментировал каждый другой код, а затем этот из этого 'it()', атм это выглядит так: pastebin.com/VNvYfeFx - person Andurit; 25.02.2015