Перейти к содержимому

Фотография

Java + selenium. Вывод информации в лог

java selenium log4j

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 sechd

sechd

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Антон Антонов

Отправлено 31 марта 2020 - 19:35

Всем привет! Решаю задание, а именно на сайте ДНС мне нужно получить информацию о системном блоке и записать информацию в лог. Часть задания звучит так:

 Открываем характеристики продукта и записываем следующую информацию о продукте:

·         Название

·         Цена

·         Срок гарантии

·         Операционная система(если есть)

 

В лог я вывожу информацию таким образом: 

 

LOGGER.info("Название: " + getName() +

"\nЦена: " + getPrice() +
"\nГарантия: " + getGarant() +
"\nОС: " + getOS());

Собственно вопрос следующий - как мне сделать так, чтобы getOs() не записывался в лог, если у системного блока будет отсутствовать ОС?? 

 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 31 марта 2020 - 20:30

Если есть информация - то возвращать "\nОС: " + взятьТекстИзЭлемента

иначе - возвращать ""

 

Это дело поместить в getOS(), "\nОС: " из LOGGER.info выпилить.


  • 0

#3 kjtester

kjtester

    Новый участник

  • Members
  • Pip
  • 1 сообщений
  • ФИО:Julian Kolodzey
  • Город:MOW

Отправлено 01 апреля 2020 - 17:23

Во-первых, в проекте нужно создать бизнес-объект Product, у которого будут name, price, os, ..., ect. + getters / setters

Во-вторых, когда находишь продукт в браузере, создавать инстанс этого продукта памяти - так будет в принципе легче работать (можно через конструктор, можно через билдер)

В-третьих, в классе Product нужно переопределить метод toString() следующим образом:

  @Override
  public String toString() {
    String s1 = String.format("Продукт{Название=%s\nЦена=%d\nГарантия=%s, ОС=%s",
        name, price, warrantyTerm, operationalSystem);
    String s2 = String.format("Продукт{Название=%s\nЦена=%d\nГарантия=%s",
        name, price, warrantyTerm);
    if (operationalSystem == null) {
      return s1;
    } else {
      return s2;
    }
  } 

Ну в тесте все сведется к такой записи:

LOGGER.info(product.toString());

  • 0

#4 sechd

sechd

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Антон Антонов

Отправлено 05 апреля 2020 - 11:07

Если есть информация - то возвращать "\nОС: " + взятьТекстИзЭлемента

иначе - возвращать ""

 

Это дело поместить в getOS(), "\nОС: " из LOGGER.info выпилить.

Попробовал таким образом сделать:
public String getHDD() {
driver.findElement(characters).click();
await(2000);
String s = driver.findElement(hdd).getText();
if (s == " нет ")
return "";
else
return "\nHDD: " + s;
}

 

но почему то все равно записывается строка "HDD: нет". Пробовал через eqauls, пробелы в "нет" стирал/добавлял. В чем может быть причина?


  • 0

#5 Freiman

Freiman

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 591 сообщений
  • ФИО:Андрей Адеркин
  • Город:Йошкар-Ола

Отправлено 05 апреля 2020 - 12:01

Попробуйте

s.contains("нет")

  • 0

#6 sechd

sechd

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Антон Антонов

Отправлено 05 апреля 2020 - 12:47

 

Попробуйте

s.contains("нет")

Благодарю! Заработало


  • 0



Темы с аналогичным тегами java, selenium, log4j

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных