Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void openSearchAndAssertResults(String link, String searchQuery) {
- /*
- уже обсуждали это на курсе
- не нужно в одном вспомогательном методе объединять действия и проверки
- и также - не нужно в одном вспомогательном методе объединять несколько независимых друг от друга действий
- open - отдельное независимое действие
- Search - тоже
- проверка количества результатов - одна проверка
- проверка текста такой-то таски - другая
- все эти вещи - не нужно объединять вот в такой блок
- во-первых - это скрывает тестовую логику
- во-вторых - нам такой блок целиком - не нужен для переиспользования
- мы это обсуждали с тобой в слеке сегодня
- и еще ниже поясню
- такого метода - быть не должно
- */
- ******************************************
- @Test
- public void searchAndFollowLink() {
- driver.get("http://google.com");
- /*
- открывать этот урл - нужно в обоих тест-методах
- реализуй open(....)
- и переиспользуй в обоих тест-методах
- */
- driver.findElement(By.name("q")).clear();
- driver.findElement(By.name("q")).sendKeys("Selenium automates browsers" + Keys.ENTER);
- /*
- и этот блок кода - тебе понадобится в обоих тест-методах
- реализуй метод search(...)
- и переиспользуй в обоих тест-методах
- */
- wait.until(sizeOf(results, 10));
- /*
- проверка размера списка - нужна только в этом тест-методе
- можно ее в свой метод не прятать даже
- */
- (wait).until(textToBePresentInElementLocated(results, "Selenium automates browsers"));
- /*
- проверка текста самого первого результата - нужна только в этом тест-методе
- тоже нету смысла реализовывать метод для нее
- напоминаю - (wait) - скобки лишние
- */
- followLink(0);
- /*
- верно, тут нужен вспомогательный метод, согласна
- */
- (wait).until(urlToBe("http://www.seleniumhq.org/"));
- /*
- эта проверка - достаточно лаконична
- хоть она и понадобится в обоих тест-методах - не знаю, стоит ли реализовывать метод для нее
- я бы не стала
- (wait) - скобки лишние
- */
- }
- /*
- к коду этого метода - вопросов нет
- разве что - те действия, которые будут нужны в обоих тест-методах - реализовать как вспомогательные методы
- и тут использовать
- но в целом - с этим тест-методом - все ок
- как я и писала в слеке - тут у нас вот такая последовательность
- предварительные действия = открыли урл
- первое тестовое действие - поиск
- проверки после поиска
- второе тестовое = followLink
- проверка после followLink
- */
- *************************************
- @Test
- public void followResultLink() {
- /*
- если выше применяешь термин followLink - то и тут также применяй
- согласна - получается путаница - и тест-метод - followLink (правда, без параметров)
- и вспомогательный метод - followLink
- неаккуратненько
- тоже писала в слеке про это
- назови оба тест-метода начиная с test
- тогда будет определенность -
- testFollowLink = тест-метод
- followLink = вспомогательный метод
- и не надо для одного действия followLink - использовать 2 разных термина (followLink и followResultLink)
- что тоже важно
- что мы должны сделать в этом тест-методе
- тоже было в слеке
- предварительные действия = открыли урл + поиск
- тестовое действие = followLink
- проверки после followLink
- напоминаю - после предварительных действий - мы не должны делать никаких проверок
- вспомни свою работу по Smoke+F - перечитай ревью
- а мы что сделали - вызвав openSearchAndAssertResults
- спрятали тестовую логику и сделали проверки, которые в данном случае - не нужны
- ведь мы не тестируем поиск в этом тест-методе, а используем его в рамках предварительных действий
- */
- openSearchAndAssertResults("http://google.com", "Selenium automates browsers");
- followLink(0);
- /*
- конечно, когда уйдут проверки после search - тест на followLink(0); начнет падать
- потому что - на этот момент еще не догрузился список результатов
- в тесте searchAndFollowLink() - такого не было - т к перез вызовом followLink(0)
- были проверки, гарантирующие - что если мы дошли до followLink(0) - то уже есть загруженный список результатов поиска
- получается - followLink(0) - зависит от контекста вызова
- а нам нужно - уйти от этой зависимости
- чтобы followLink(0) сам был умным и дожидался момента, когда можно будет кликнуть на главной линке н-ого результата
- т е - проверка должна быть внутри followLink и выполнять функцию умного ожидателя правильной тестовой ситуации
- давай разберемся - чего правильно ждать
- если нам нужно кликнуть на элементе с индексом 5
- то нам нужно - чтобы элементов в списке было как минимум 5+1 (т к индексы - с нуля идут)
- и вот для такой проверки - как раз нужен кондишен - minimumSizeOf
- реализуй кондишен
- встрой в followLink - ждущую проверку
- и тогда и этот тест-метод будет работать корректно
- */
Advertisement
Add Comment
Please, Sign In to add comment