Как получить значение параметра выбранного элемента
Я пытаюсь получить значение параметра элемента select с помощью Protractor. Однако я не могу найти элемент option.
HTML
<select ng-options="opions.c as options.n for option in options" ng-model="model">
<option value="0">Option 1</option>
<option value="1">Option 2</option>
</select>
Spec файл
describe('testing select option', function() {
it('', function() {
ptor = protractor.getInstance();
//This will not get the option required
ptor.findElement(protractor.By.binding('model'));
});
});
Я не могу найти способ захватить значение параметра, так как я не нашел функцию, которую я могу использовать, которая не дает и исключение или сообщение об ошибке.
Кто-нибудь знает, как решить эту проблему?
Ответы
Ответ 1
ok снова Теперь я смог выяснить, как захватить элемент option с помощью транспортира.
приведенный ниже пример кода показывает, как это сделать.
ptor.findElement(protractor.By.css('select option:nth-child(value of the option you require IE: the number)')).click();
Ответ 2
У меня возникли проблемы с тем, что выпадающие списки работают хорошо, и потратили некоторое время на его работу (и поэтому я делюсь им здесь, если кто-то считает это полезным).
В более ранних версиях Protractor был by.selectedOption, который фактически выполняет то же самое, что и by.select, но возвращает только выбранный элемент. Итак, чтобы получить текст выбранного варианта выше, вы могли бы:
expect(element(by.selectedOption('model')).getText()).toEqual('Option 1');
Я написал сообщение в блоге, если вы хотите более подробно, он также включает вспомогательную функцию для выбора опции в раскрывающемся списке: http://technpol.wordpress.com/2013/12/01/protractor-and-dropdowns-validation/
Последние версии транспортира удалили эту функцию, заменив ее на:
expect(element(by.id('my_id')).element(by.css('option:checked')).getText();
Что более гибко, так как оно может применяться к любому из поисковых устройств, тогда как selectedOption работает только с поиском модели.
Ответ 3
Попробуйте использовать xPath:
ptor.findElement(protractor.By.xpath('//select/option[1]'));
Вы можете использовать ту же технику, чтобы выбрать опцию по значению:
protractor.By.xpath('//select/option[text()="Option 2"]'));
Мне нужно было сделать это для настройки форм, где входы видны на основе выбранных выпадающих меню, например:
makeFord = protractor.By.xpath('//select[@id="make"]/option[text()="Ford"]'));
modelMustang = protractor.By.xpath('//select[@id="model"]/option[text()="Mustang"]'));
makeFord.click();
modelMustang.click();
Ответ 4
Вот как вы можете получить значение опции в select:
HTML
<select ng-options="opions.c as options.n for option in options" ng-model="model">
<option value="Africa">Option 1</option>
<option value="Switzerland">Option 2</option>
</select>
.spec
describe("Country <select>", function() {
it("should have 'Africa' as the value of the first option", function() {
browser.get('index.html');
let all_options = element.all(
by.options("opions.c as options.n for option in options") //use whatever string is assigned to the ng-options attribute in the html
);
let first_option = all_options.get(0); //or all_options.first()
let second_option = all_options.get(1); //or all_options.last()
expect(
first_option.getAttribute('value')
).toEqual("Africa");
});
});
Чтобы получить значение выбранного параметра (который может быть опцией, программно выбранной с помощью транспортира, вызывая функцию click() для опции):
expect(
element(
by.model('model') //'model' is the string assigned to the select ng-model attribute
).element(
by.css('option:checked')
).getAttribute('value')
).toEqual('Swizerland');
Ответ 5
Чтобы перечислить теги опций, вы можете попробовать использовать метод .all
, и сначала вы должны получить к нему доступ родительским.
element(by.model('model')).all(by.tagName('option')).then(function(arr) {
expect(arr.length).toEqual(2);
});
Взгляните на ссылку API для вдохновения
http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.all
Изменить: также следовать руководству по стилю, которое препятствует использованию XPath
http://www.protractortest.org/#/style-guide