julia_v_iluhina

Untitled

Aug 27th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.79 KB | None | 0 0
  1. если я верно понял задание ))
  2. /*
  3.     ну, направление верное)
  4.  
  5.     но есть нюансы)
  6.  
  7.     ревью прошлого решения и тут примени
  8.     про такое же - не пишу
  9. */
  10. **************************************************************
  11. public class SearchGoogleSeleniumSeparate {
  12. /*
  13.     имя тест-класса - заканчивается на Test
  14.     согласно conventions
  15.  
  16.     обязательно на раздел по неймингу посмотри
  17.     имя класса - как в прошлой работе - и тут будет ок
  18. */
  19.  
  20.     WebDriver driver = new FirefoxDriver();
  21.     WebDriverWait wait = new WebDriverWait(driver, 6);
  22. /*
  23.     ага, тут по-другому реализовал
  24.     правильно - что удаляешь вебдрайвер в  After-методе
  25.     такие переменные (не статические) - будут инициализироваться перед запуском каждого теста
  26.     соотвественно - и убивать надо после каждого
  27.  
  28.     вообще - есть нюансы  - где что реализовавыть)
  29.     тут все ок у тебя получилось, но важно знать
  30.  
  31.         BeforeClass vs static initialization block
  32.         http://stackoverflow.com/questions/15493189/beforeclass-vs-static
  33.         Получим более содержательное сообщение об ошибке - если работаем с аннотированными методами
  34.         http://www.unknownerror.org/opensource/junit-team/junit/q/stackoverflow/512184/best-practice-initialize-junit-class-fields-in-setup-or-at-declaration
  35.         про ругань красивую - http://www.javaworld.com/article/2076265/testing-debugging/junit-best-practices.html
  36.         (подзаголовок Do not use the test-case constructor to set up a test case)
  37.  
  38.         Примерно также обстоят дела с вариантами instance initialization block vs before
  39.         туда же в кучу и инициализация не статической переменной
  40.  
  41.         Так что если код теоритечески может упасть - лучше юзай jUnit-овские
  42.         Before & After / BeforeClass & AfterClass
  43. */
  44.  
  45.  ****************************************
  46.  
  47.     @Before
  48.     public void createDriverOpenGoogleAndSearch() {
  49.         driver.get("http://google.com/ncr");
  50.         findElement(By.name(searchField)).sendKeys(searchQuery + Keys.ENTER);
  51.     }
  52.  /*
  53.     красивые грабли)
  54.     даже несколько)))
  55.  
  56.     читаем имя метода
  57.     читаем реализацию
  58.     правда - про разное написано?
  59.  
  60.     это раз)
  61.     не торопись равнять имя
  62.  
  63.     для обоих тестов - согласна - надо открывать урл
  64.  
  65.     а дальше - начинается разница
  66.     testSearchResultsSizeAndText - тестирует действие Search
  67.     но - мы его делаем не в тест-классе
  68.     как считаешь - что будет - если при выполнении Search - случится исключение?
  69.     узнаем мы, что тест testSearchResultsSizeAndText - не прошел?
  70.  
  71.     вот тебе и вторые грабли
  72.  
  73.     да, в Before-метод - можно вынести открытие урла
  74.     это подготовительные действия для обоих тест-методов
  75.  
  76.     но Search - другая история
  77.         в одном тест-методе - это тестируемые действия
  78.         а в другом - предварительные действия, подготовка тестовой ситуации
  79.     это не получится вынести в  Before
  80.  */
  81. *************************************************
  82.     @Test
  83.     public void testFollowResultLink() {
  84.         wait.until(visibilityOfAllElementsLocatedBy(By.cssSelector(searchResults)));
  85.         /*
  86.             посмотри на реализацию этого кондишена ради интереса
  87.             удивишься)
  88.            
  89.             ты верно понял - что перед кликом на линке такого-то результата - надо подождать
  90.             вопрос - чего
  91.            
  92.             минимально, чего нужно дождаться если ты кликаешь на элементе с индексом 3
  93.             чтобы размер списка был 3+1
  94.            
  95.             реализуй кондишен minimumSizeOf
  96.             и тут его примени
  97.         */
  98.         findElements(By.cssSelector(searchResults)).get(0).findElement(By.cssSelector(resultLink)).click();
  99.         /*
  100.             писала тебе в ревью к прошлой работе - реализуй метод followLink(int index)
  101.             и внутрь метода встрой эту проверку
  102.            
  103.             такая проверка служит именно тому, чтобы дождаться - что на момент клика - есть
  104.             на чем кликать
  105.             и такого надо ждать всегда при использовании followLink
  106.             соответственно - проверку можно включить в метод followLink
  107.             на правах необходимого для корректной работы ожидания  
  108.         */
Advertisement
Add Comment
Please, Sign In to add comment