Size: a a a

QA — Автоматизация

2020 January 13

IE

Ivan Efimov in QA — Автоматизация
=> searchPage.chooseSize("100x100");
=> searchPage.addToCart(product_id);
источник

AC

Alice Carroll in QA — Автоматизация
Ksenia
Всем привет, если не сложно, подскажите пожалуйста.  Я недавно начала изучать selenium и написала свой первый тест по поиску товара на сайте Спортмастер. Старалась держаться паттерна page object.
В структуре проекта есть один главный класс с тестом SearchFromFullName и три класса с методами и элементами каждой страницы. Дело в том, что если хочется поменять название товара, поиск которого ведется, необходимо сделать это не только в основном классе SearchFromFullName, но и в SearchPage, потому что это же название необходимо вписать в локатор для поиска товара в списке. Можно ли как-то вынести строку с названием отдельно в переменную, чтобы можно было менять ее только в одном месте? По-моему сейчас не очень удобно все выглядит.
Также очень приветствуется общая критика кода, чтобы выявить все слабые места и поправить.
Весь код лежит по ссылке https://github.com/Ksenia12k/SportmasterTestsSelenium
1) Посмотрите что такое гитигнор
2) Это жесть, дальше читать расхотелось  https://github.com/Ksenia12k/SportmasterTestsSelenium/blob/bc1cd76556faa636f66b9cb7dff48ab1dd147ad6/src/test/java/pages/HomePage.java#L45
источник

IE

Ivan Efimov in QA — Автоматизация
searchPage.addToCart();
searchPage.afterAddToCart();??
Добавить в корзину и после этого добавить еще раз в корзину?
searchPage.addToCart([product_id_1, product_id_N]);
источник

AV

Alexei Vinogradov in QA — Автоматизация
Oleg Nazarov
Абстрактный класс — это класс, у которого не реализован один или больше методов (некоторые языки требуют такие методы помечать специальными ключевыми словами).

Интерфейс — это абстрактный класс, у которого ни один метод не реализован, все они публичные и нет переменных класса.

Интерфейс нужен обычно когда описывается только интерфейс (тавтология). Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя «раскрывать». Поэтому он просто реализует интерфейс.

Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода.
Будете смеяться, то в Java уже можно и в интерфейсках реализовывать методы. Не помню сейчас, кажется c Java 8.
источник

AS

Aleksandr Shipovalov in QA — Автоматизация
Alexei Vinogradov
Будете смеяться, то в Java уже можно и в интерфейсках реализовывать методы. Не помню сейчас, кажется c Java 8.
ага с 8 default методы
источник

S

Sergey Sergey in QA — Автоматизация
Самое главное, что Интрерфейс не участвует в дереве наследования в отличие от абстр. класса
источник

AV

Alexei Vinogradov in QA — Автоматизация
Имя Фамилия
В преимуществах абстрактного класса перед интерфейсом
нормальный вопрос я считаю. :) Ну почти. Имхо "преимущества" - неправильное слово, интерфейс обычно в один случаях используют - абстрактный класс в других.
источник

IE

Ivan Efimov in QA — Автоматизация
когда мне задают такие вопросы, у меня возникает вопрос зачем мне его задают?) вот вижу сидят они и каждый день используют код в интерфейсах и абстрактные классы))
источник

S

Sergey Sergey in QA — Автоматизация
Кто-нибудь подскажет, как заставить аллюр изменять статус теста?)
источник

AV

Alexei Vinogradov in QA — Автоматизация
Ivan Efimov
когда мне задают такие вопросы, у меня возникает вопрос зачем мне его задают?) вот вижу сидят они и каждый день используют код в интерфейсах и абстрактные классы))
Ну в идеале - чтобы действительно разницу понять. А в худшем случае - чтобы выучить наизусть ответ на вопрос собеседования.
источник

BO

Boris Osipov in QA — Автоматизация
Sergey Sergey
Кто-нибудь подскажет, как заставить аллюр изменять статус теста?)
давай я за тебя позову Артема в аллюр чате :)
источник

AV

Alexei Vinogradov in QA — Автоматизация
Sergey Sergey
Кто-нибудь подскажет, как заставить аллюр изменять статус теста?)
источник

AV

Alexei Vinogradov in QA — Автоматизация
@javastart - для новичков по Java. Но на спор, там будут в основном адище отвечать.
источник

ИФ

Имя Фамилия in QA — Автоматизация
Alexei Vinogradov
Ну в идеале - чтобы действительно разницу понять. А в худшем случае - чтобы выучить наизусть ответ на вопрос собеседования.
В чем отличие я ответил, а в чем глубинный смысл - нет
источник

ИФ

Имя Фамилия in QA — Автоматизация
Все равно придется своими словами как-то формулировать
источник

IE

Ivan Efimov in QA — Автоматизация
мой гарбидж коллектор удалил ответ на вопрос про код в интерфейсах, и про абстрактные классы... очень редко пишу override... код в интерфейсах не пишу чтобы не путать себя и окружающих...
источник

IE

Ivan Efimov in QA — Автоматизация
homePage  = new HomePage(driver, 20);
driver.get("https://www.sportmaster.ru/");
=> homePage = new HomePage(driver, 20);
=> homePage.Open();
источник

K

Ksenia in QA — Автоматизация
а можете подсказать что почитать чтобы избавиться от try catch? Мне тоже очень не нравятся эти моменты, но это единственное решение которое я нашла, иначе раз через раз тест падает с ошибкой
источник

AV

Alexei Vinogradov in QA — Автоматизация
Имя Фамилия
В чем отличие я ответил, а в чем глубинный смысл - нет
Я это так вижу. Абстрактный класс используется, когда ты делаешь для пользователя почти всё, кроме может быть нескольких методов. И говоришь - отнаследуйся от моего класса, напиши сам реализацию метода "doSomething" - и всё взлетит.

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

Ещё бывают маркер-интерфейсы, которые без единого метода, просто чтобы помечать классы которые обладают какими-то свойствами.

Наверное еще что-то есть, это то, что мне вспомнилось из общеиспользуемого.
источник

IE

Ivan Efimov in QA — Автоматизация
setSearchTxtFromBuffer - не проверяет вставленный текст после вставки
источник