2016-11-14 7 views
0

Я использую систему автоматизации с селеном и транспортиром, кодируя в JavaScript. Однако эта часть приложения выполнена без углового. У меня есть поле количества с кнопкой плюс и минус, чтобы увеличить число. Мне нужно выбрать номер для моего теста.Выберите динамическое число внутри диапазона

Вот DOM с '2', как номер

<div class="modify-product padding-lg-top hide-on-review"> 
<b data-lang-key="store.qty">Qty:</b> 
<span class="modify-action"> 
    <span class="remove">-</span> 
    <span class="product-quantity">2</span> 
    <span class="add">+</span> 
</span> 
</div> 

Если я использую JQuery в консоли, я могу выбрать 2 следующим:

$('.cart-product .product-quantity').text() 

Сейчас в селен, Я пытаюсь использовать следующий селектор:

return element(by.css('.cart-product .product-quantity').text()) 

Это оказалось неудачным. Я также попробовал .val() и несколько других методов, но все, что я пытаюсь, возвращает весь элемент span или возвращается как неопределенный.

Мысли?

+0

я все еще получаю TypeError об ошибке:. Элемент (...) текст не является функцией – MikeyH

+1

Его not'text'. Вам нужно использовать 'getText()'. –

+1

Каким бы ни был метод для получения текста, не следует ли вызывать объект-элемент? а не внутри, как в настоящее время используется. Найдите элемент, затем получите текст как элемент (by.css ('css_selector')). GetText() – lauda

ответ

0

См. Следующие ссылки.

Link 1

Link 2

Важно - Никогда не используйте для этого XPath рода сценариев

0
return element(by.className('product-quantity')).getText(); 

Запомнить GetText() возвращает promise.So вы должны использовать то(), чтобы получить Значение

0

Помните, что методы транспортира возвращают обещания всегда, потому что они являются асинхронными. Ваш тест должен быть следующим:

let quantities = element.all(by.css('.product-quantity')); 
quantities.get(0).then(function(el) { 
    expect(el.getText()).to.become('2'); 
}); 
Смежные вопросы