2015-03-25 2 views
1

Я пытаюсь взаимодействовать с моими проекторами E2E с выпадающим меню.Параметры выпадающих списков параметров в тестах Protractor E2E

На странице, которую я тестирую, у нас есть выпадение для стран. Выпадающее меню содержит 4 выбираемых параметра "?" который является пустым, а затем США, Великобритании и Канады.

Я, очевидно, не правильно нахожу элемент в моем файле PO, поскольку параметризация не работает. Тесты «проходят», однако, когда вы смотрите, что движется, выбрана страна, это «?» один (который по умолчанию). Таким образом, тест перемещается на страницу, выбирая элемент и не нажимая на нужную мне опцию.

Из того, что я могу сказать, мне нужно как-то получить параметризованный параметр, который вводится из файла spec в элемент, однако я не уверен, что это возможно.

Что мне не хватает/не так?

Spec файл:

campaignPO.clickCountryLocation('US'); 

PageObject файл:

this.countryType = by.css('select[ng-model="country"]'); 

this.clickCountryLocation = function(button) { 
     element(this.countryType).click(button); 
}; 

Здесь элемент работал с:

<select class="form-control input-sm ng-pristine ng-invalid ng-invalid-required" 
     ng-size="11" 
     ng-model="country" 
     name="country" 
     ng-options="opt.value as opt.label for opt in countries" 
     ng-change="updateCountry()" 
     required=""> 
<option value="?" selected="selected" label=""></option> 
<option value="0" label="US">US</option> 
<option value="1" label="UK">UK</option> 
<option value="2" label="Canada">Canada</option> 
</select> 

ответ

2

Я хотел бы использовать select-option абстракции предложенной здесь :

Пример использования:

var SelectWrapper = require('select-wrapper'); 
var mySelect = new SelectWrapper(by.name('country')); 

mySelect.selectByText('US'); 
+0

Спасибо за это! Ссылка именно то, что я ищу. Идем, чтобы дать этому выстрел и посмотреть, как это работает. – user249656

+1

Это сработало так, как мне это нужно. Theres все еще некоторые вещи, которые мне нужно выяснить, но в целом лучший ответ! Предоставленная ссылка была теми ресурсами, которые мне нужны. Благодаря! – user249656

0

Прежде всего, вы можете упростить select локатора с помощью

var selectEl = element(by.model('country')); 

Я не уверен, что атрибут CSS работает очень Что ж. Чтобы выбрать опции:

var optionEl = selectEl.element(by.cssContainingText('option', 'US')); 
optionEl.click(); 

Если вы просто пытаетесь открыть выбор без выбора значения, не делайте этого. Выбирают компоненты HTML, и вы не хотите их тестировать таким образом. Даже работа с ними в javascript громоздка. Если вы хотите увидеть, какие значения там, перечислите элементы option.

+0

Спасибо за комментарий. Проблема, которую я вижу в этом, заключается в том, что она жестко привязана к американскому варианту, и мы не можем войти в наш spec-файл и сказать «Великобритания» или «Канада». Без сомнения, это один из способов заставить его работать, но он не использует параметризацию и вместо этого просто является жестко запрограммированным маршрутом. – user249656

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