Вот для удобства не скрин, а сам код:
.getText('.cart__calc-position_field_discount .price__val')
.then(discount =>{
let regexp = /\s/; // пустые значения discount = discount.replace('₽','').replace(',','.').replace(regexp,'');
console.log("discount="+discount);
this.browser.getText('.cart__calc-position:nth-child(1) .price__val')
.then(summa => {
summa = summa.replace('₽','').replace(',','.').replace(regexp,'');
console.log( "summa="+summa);
this.browser.getText('.cart__calc-position:nth-child(3) .price__val')
.then(kupon => {
kupon = kupon.replace('₽','').replace(',','.').replace(regexp,'');
console.log( "kupon="+kupon);
this.browser.getText('.cart__calc-position:nth-child(5) .price__val')
.then(total => {
total = total.replace('₽','').replace(',','.').replace(regexp,'');
console.log( "total="+total);
console.log('***************1');
console.log(summa + ' - ' + kupon + ' - ' + discount + ' = ' + total);
console.log((summa - kupon - discount) == total);
if ((summa - kupon - discount).toFixed(2) - total <=0.01) {}
else { console.log(summa + ' - ' + kupon + ' - ' + discount + ' <> ' + total); testResult = false}
})
},err => {console.log(err); testResult = false})
},err => {console.log(err); testResult = false})
})
.pause(5000)
Итак, разбор Ленкиного тупняка.
Сначала я не могла сообразить, почему этот элемент находился в хидден состоянии.
Он у меня отображался вот так:
А отображался он так, Потому что у меня заказа было мало, на скидку не дотягивало.
А это прогрессивная скидка, которая зависит от суммы заказанного товара.
Т.е. если бы сумма товара, как в тесте, который я написала, была бы больше 5к, то скидка составляла бы 10 % и этот элемент не был бы хидден.
Второй мой фолт, почему тест не работал, это то, что Гермиона не обрабатывает вложенность. Она фейлит и бежит дальше. Так было и сейчас. Надо обязательно ставить паузу после вложенности.
Вот тут regexp ищет все пробелы. Вот эта вот хрень "
/\s/" - это означает пустые значения.
Дальше мы заменяем рубли на ничто, запятую на точку, пустые места на ничто.
Для чего нам надо было убирать пустые места?
Пустые места мы убирали, чтобы число воспринималось как число.
Если больше тысячи, то оно было так: 3 000, т.е. с пробелом. А нам надо, шоб было число. Пришлось юзать регэксп.
Вывод в Селениуме этого куска кода вот такой:
Да, логика тут такая:
Т.е. у нас тут складывается купон и скидка.
Мы делаем:
сумма - купон - дисконт = тотал.
5145.80 - 10 - 514.58 = 4621.22
И если:
сумма - купон - дисконт - тотал <= 0.01 (1 коп, потому что почему-то с "0" не проходит тест)
5145.80 - 10 - 514.58 - 4621.22 <= 0.01, то норм
В противном случае
сумма - купон - дисконт не равно тоталу.
5145.80 - 10 - 514.58 != тоталу, мы сваливаемя с фолс.