Добрый день!
Как водится, только начала изучать автоматизацию (под java), использую Selenium IDE, далее перевожу тест под WebDriver и JUnit 4, закидываю в Eclipse и немного подправляю (гугл+ютуб-обучалки). Вот в чем моя задача.
Есть тест, записаный по вышеуказанной схеме. Задача теста - ежедневная проверка стоимости телефона на странице и составление отчета об изменении цены. Требуется наиболее удобным способом сгенерировать отчет об изменениях.
Я предполагаю, что можно создать текстовый файл на жестком диске (с этим проблем нет), далее нужно получить запись в файле “Цена поменялась с такой-то на такую для такого-то телефона” (страниц для проверки много).
С созданием файла проблем нет. С записью в него - тоже. Я не могу найти способ сохранить старую цену, чтобы при этом и дальше осуществлялась проверка на случай изменения. Цена может меняться каждый день на странице, а может оставаться прежней. В случае, если цены одинаковые, записи в файл быть не должно.
Как грамотно реализовать решение?
Чё-то я не понял зачем сохранять старую цену, если она уже есть в файле? Просто читаешь последнюю цену из файла, сраниваешь с актуальной. Если отличаются, записываешь в файл, если нет, ничего не делаешь. Или в чём вопрос?
Файл пуст и только создан…
И? В чём загвоздка?
Чтобы грамотно реализовать решение необходимо сначала чётко сформулировать задачу. И это не придирка, а совет. Когда сформулируешь в чём заключается проблема, решение найдётся значительно проще
Задачу ставила не я… но вроде разобралась с тем, что требуется
Попробую ещё раз сформулировать. Я проверяю цену на веб странице. Например, сейчас она равна 5 тыс руб.
Я её по всей видимости должна сохранить в файл (как Вы посоветовали выше), а завтра если при проверке обнаружится изменение цены, например станет равной 5.5 тыс руб, то я должна буду это вывести в отчёт.
Получается, уже в другой файл?
Я запуталась и не знаю, как вообще рационально реализовать
Я не понимаю, как работать с этими значениями цены.
По идее, всё закручено на простом условии
if (old_price!= new_price) {
System.out.println("Цена поменялась с " + old_price + " до " + new_price+“для”+“current_handset”);
}
Тут надо смотреть на то как организован отчет: в каком виде для него должны подготавливаться данные. Выясни этот момент. А заодно и цель такого мониторинга. Потому что вполне возможно, что нужен не отчет, а нотификация в момент изменения цены выше/ниже определенной отметки. Например. Я ж не знаю что за задача.
В зависимости от этого уже и с форматом вывода определишься
В отчете должны фискироваться только телефоны, в которых произошло изменение цены, примерно в таком виде: “Цена поменялась с такой-то на такую для такого-то телефона” . То есть придется иметь дело с разными типами
ЦЕЛЬ КАКАЯ? Ежедневно сообщать об изменении цен на телефоны? Или иметь возможность смотреть динамику за период? Ещё что-то?
Да, цель в ежедневном мониторинге и отслеживании изменений
Всё, я кажется понял в чём проблема. Сложность в том, что телефонов много и если всю инфу хранить в одном файле, то не понятно как менять значение для конкретного телефона.
Если задачу рассматриваем так, как она сейчас поставлена, то можно сделать так:
- хранить всё в одном текстовом (txt, csv, xml) файле
- для каждого телефона иметь свой отдельный файлик со значением последней цены и складировать файлы в одной директории
- хранить всё в одном файле sqlite-БД
Я бы выбрал последний вариант - работать с sqlite очень просто. Правда есть сложность, что формат файла не текстовый, так что просто его скормить скажем в Excel не получится, надо будет предварительно сформировать на основании данных из файла CSV-файл. Но зато работать с БД проще при поиске и обновлении данных по ценам, чем с текстовым файлом.
Второй вариант проще в реализации, чем первый, но для построения отчета ещё менее удобен, чем третий. Я бы такой не стал делать.
Первый вариант можно сделать, если есть боязнь БД и не хочется разбираться. В этом случае я бы сделал CSV-файлик в формате
Телефон, Цена
IPhone 5s 16G, 15000
iPhone 5s 32G, 20000
… и т.д.
Считываешь значения из него в HashMap и работаешь с мапой, обновляя все значения какие надо. По окончании записываешь значения из мапы в файл в том же формате, поверх.