Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class GoogleSearchTest {
- @Test
- public void searchTextAndAsserResults() {
- /*
- searchAndFollowLink - будет точнее)
- */
- open("https://google.com/");
- searchField("Selenium automates browsers");
- /*
- просто search - точнее отражает то, что мы делаем
- */
- assertSearchResults(10);
- /*
- а тут - assertResultsCount(10) - тоже было бы точнее
- про Search - я бы уже не уточнялась - т к название тест-класса + тест-метода
- */
- assertSearchResults(0, "Selenium automates browsers");
- /*
- тут проверяем - не результатЫ
- а результат
- assertResult - будет ок
- */
- followLink(0);
- /*
- а где проверка?
- мы перешли по линке
- и?
- уже тест прошел - если тест не упал на followLink(0);
- даже если открывшаяся страница будет другой - этот тест прошел
- да и нам нужен был е2е - один тест-метод
- */
- }
- @Test
- public void assertSeleniumOfficialPage() {
- $("#sidebar>p>strong").shouldHave(exactText("Selenium is a suite of tools"));
- Assert.assertEquals("http://docs.seleniumhq.org/", url());
- }
- /*
- эти проверки - делай не как отдельный тест-метод
- а как часть одного тест-метода
- в jUnit - не гарантируется порядок запуска тест-методов
- да и это хорошо и правильно
- думаю, пояснения выше - уже прояснили немного - почему плохо делать етст-методы зависимыми
- разрывать действия и проверки на разные тест-методы - вообще не стоит
- тест = и действие и его проверка
- JUnit - реализован так, что порядок запуска тест-методов - случаен
- https://github.com/junit-team/junit4/wiki/test-execution-order
- можно конечно - и задать порядок запуска
- но - это bad practice - т к это - не эффективно, да и ненадежно
- https://youtu.be/yyzGP2CyMRM
- вот это видео Николая Алименкова - советую смотреть и пересматривать
- */
- }
- *************************************
- public class GoogleSearchPage {
- /*
- что делаем
- делаем пейдж-модуль
- вспомни - как употребляли Page в имени класса пейджа модуля
- */
- public static ElementsCollection searchResults = $$(".g");
- /*
- .srg>.g - так точнее
- может конечно тебе повезло
- и по твоему локатору - как раз было 10 результатов
- но когда помимо 10 результатов поиска google еще что-то выдает - то селектора ".g" не хватит
- уже имя пейда говорит - что речь про гугл-поиск
- слово search - во многих случаях уже лишнее уточнение
- и для этого поля
- и для многих методов этого пейджа
- за исключением метода search конечно)
- */
- **********************************
- public static void searchField(String qField) {
- $("#lst-ib").setValue(qField).pressEnter();
- }
- /*
- про имя метода - уже писала
- что делаем = ищем =search
- Field - ничего полезного не уточняет
- имя параметра - значение - по чему ищем
- и это не qField
- а query, queryText
- для поля есть селектор понагляднее
- обрати внимание на name этого поля
- так во многих гугловских проектах сможешь поле поиска найти
- */
- ******************************
- public static void assertSearchResults(int resultIndex, String textResult) {
- searchResults.get(resultIndex).$(".st>em").shouldHave(exactText(textResult));
- }
- /*
- в имени меода - лишнее слово Search - уже сказали на уровне имени класса
- в именах параметров - result - уже сказали на уровне имени метода
- лишние слова - тоже вредно
- тут не нужно уточняться до $(".st>em")
- достаточно проверить что в текст такого-то результата входит такой-то текст
- т е - использовать менее строгий кондишен
- кондишена text - хватит, и уточнений меньше
- */
- ***********************************
- public static void assertSeleniumOfficialPage() {
- /*
- как так вышло - что этот метод остался в пейдже?
- и при этом - появился отдельный тест-метод с таким кодом...
- если тут что-то не ясно - лучше бы все моменты уточнить
- обращайся в слеке
- */
Advertisement
Add Comment
Please, Sign In to add comment