В корзине отображается цена товара следующим образом: $ 123.
Посредством storeText я сохраняю это значение в переменную productPrice, и хочу проверить, правильно ли отображается цена товара ($ 123) + цена упаковки ($ 5).
Проблема: если в переменной помимо цифр находится что-то “лишнее” (буквы, философские вопросы, предложения об увеличении your pencil), то операции плюсования, а равно и минусования и всего такого прочего с подобными переменными невозможны.
Решение: удалить из текста переменной ненужные символы.
// сохраняю со страницы сайта цену товара в переменную productPrice в виде 'as is': '$ 123'. storeText | //div[@class='product_price'] | productPrice echo | ${productPrice} | // превращаю ненужные мне символы '$ ' в пустоту. storeEval | storedVars['productPrice'].replace("$ ", "") | productPrice echo | ${productPrice} |
Теперь в переменной productPrice находится обычное число ‘123’, с которым можно математически делать всё, что нужно.
Чтобы в итоге проверить, что в нужном месте страницы отображается определенный текст (цена товара + цена упаковки = $ 128), предварительно потребуется вернуть циферке предваряющие её символы:
storeEval | '$ '+${productPrice} | productPrice echo | ${productPrice} |
PS Напоминаю сам себе, что storedVars[‘productPrice‘] и ${productPrice} являются идентичными сущностями, просто первая пишется в нотации JavaScript, а вторая – в нотации Selenium IDE.
Также прошу сам себя оценить силу и возможности автозамены…
Чудовий приклад!
Спасибо, очень полезно!
Спасибо, помогли!
помогите пожалуйсте решить проблему из строки “Listed with Silvia Sanford DRE# 01213708, Century 21 Home Realtors ” надо вычленить значение 01213708 . спасибо за терпение
Что именно вы сделали, что не получается вычленить это значение?
Доброго времени суток!
Вопрос у меня следующий по этому самому “вырезанию” … есть ли возможность отрезать, например, последний (предпоследний, 5й с конца, и т.п.) символ в строке?
>>>>>>>>>>>>
Как пример…
– Допустим есть текст “Displaying products 1 – 9 of 9”.
– Мне из него нужно вырезать “9”.
– Но это самое “9” меняется в зависимости от поискового запроса и, соответственно, количества результатов. Изза этого заюзать команду:
storeEval | storedVars[‘total’].replace(“Displaying products 1 – 9 of “, “”) | total
…нельзя (ибо за хард-код ататай будет)
>>>>>>>>>>>>
Заранее спасибо)
…из положения вышел (особая благодарность нашим java-девам) таким образом:
– store | Displaying products 1 – 9 of 9 | text
– storeEval | javascript:{storedVars[‘text’].replace(“Displaying products 1 – “, “”)} | number
//отрезал заранее известный (константный) кусок текста)
* number = “9 of 9″
– storeEval | javascript:{storedVars[‘number’].slice(0,storedVars[‘number’].indexOf(” of”))} | number
//отрезает от текста слово ” of” и все, что находится после него
* number = “9”
Это конечно же не панацея… и не во всех случаях slice поможет…но, как по мне, полезная штука!
ЗЫ: Если найдутся другие варианты, то интерестно было бы увидеть!
Попыталась воспользоваться советом. Получилась такая вот конструкция:
[info] Executing: |storeEval | javascript:{storedVars[‘code’].replace(“На открывшейся странице в поле «Код активации» введите: “, “”)} | code |
[info] script is: javascript:{storedVars[‘code’].replace(“На открывшейся странице в поле «Код активации» введите: “, “”)}
[error] Threw an exception: storedVars.code.replace is not a function
Копирую лог вместе с ошибкой.
Что не верно?
Сайт, который подвергается резке – обычное письмо для восстановления пароля, в ящике Яндекса. Вырезаю код восстановления из фразы “На открывшейся странице в поле «Код активации» введите: 1G6MO61N.”
У меня не воспроизводится.
Подобную ошибку вижу впервые, поэтому не владею ситуацией.
Попробуйте пошаманить – переименуйте переменную ‘code’ в что-то вроде ‘pistolet’.
И попробуйте запустить тот же скрипт на другом компьютере.
Судя по всему, я неправильно выполнила выбор текста, из которого, соственно, вырезается кусок.
у меня тоже была такая ошибка, я просто переписала кавычки)
Супер! Большое спасибо!
Добрый вечер. Подскажите, как при помощи IDE проверить на соответствие только часть урлы?
Я по ссылке перехожу на domain.com/?authalias=param1_param2_param3_blablabla, селениумом проверяю, что урла должна быть domain.com/?authalias=${param1}_${param2}_${param3}, как избавиться от blablabla, т.к. для теста остальные параметры не важны и мне нужно проверить только N первых?
Если этот “blabla” постоянный — уберите его вообще из текста:
storeExpression
domain.com/?authalias=param1_param2_param3_blablabla
URL
echo
${URL}
storeEval
storedVars[‘URL’].replace("blablabla", "")
URL
echo
${URL}
Другой вариант: проверить через assertText, что в строке есть конкретный текст (он же параметр).