Чего я хочу добиться: если элемент доступен, используйте его, если нет, то используйте другой локатор.
Редактировать:
Мое предыдущее объяснение былонемного бедны, так что давайте начнем с самого начала.У меня есть 2 случая:
- При наличии цены продажи.
- Если цена продажи отсутствует, присутствует только обычная цена.
# 1 Case Markup: при наличии цены продажи.
<td class="total-amount">
<s>58.00</s>
<span>£30.50</span>
</td>
span
- цена продажи.s
- обычная цена.
# 2 Разметка кейса: при отсутствии продажи присутствует только обычная цена
<td class="total-amount">£78.00</td>
Basket.js
this.price = this.basket.element(by.css('.total-amount span, .total-amount'));
----
totalAmount() {
return this.getAttribute('attribute-name')
.then(summaryprice => summaryprice.slice(1))
.then(summaryprice => parseFloat(summaryprice));
}
Spec.js
expect(delivery + price).toEqual(basket.totalAmount());
# 1 Дело - транспортир Результаты: Отказ
Expected 30.5 to equal 58.
30.5
- (это стоимость доставки + цена) и это правильно.58.0
- это не правильно, потому что первое условие верно, поэтому не должно быть 30.5
?
Если я выберу:
this.price = this.basket.element(by.css('.total-amount span'));
, то сбоя не будет.
Я хочу написать более гибкие тесты и охватить оба случая, потому что цены часто меняются.