julia_v_iluhina

Untitled

Jul 22nd, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.50 KB | None | 0 0
  1. pom.xml
  2.  
  3. /*
  4.     точно можно попроще)
  5.  
  6.     попробуй вариант полаконичнее)
  7.     с 2.53.1 - тоже все ок должно быть - проверь
  8. */
  9.  <dependencies>
  10.         <dependency>
  11.             <groupId>org.seleniumhq.selenium</groupId>
  12.             <artifactId>selenium-java</artifactId>
  13.             <version>2.53.0</version>
  14.         </dependency>
  15.  
  16.         <dependency>
  17.             <groupId>junit</groupId>
  18.             <artifactId>junit</artifactId>
  19.             <version>4.12</version>
  20.         </dependency>
  21.  
  22.     </dependencies>
  23. **********************************************
  24.  
  25. public class GoogleTest {
  26.  
  27.     ...
  28.     Actions actions = new Actions(driver);
  29.     /*
  30.         думаю - тебе не понадобится такая переменная)
  31.         а вот переменную wait = new WebDriverWait(driver, 6)); - я бы завела)
  32.     */
  33.  
  34.     @Test
  35.     public void testSearchAndFollowLink() {
  36.  
  37.         driver.get("http://google.com/ncr");
  38.         driver.findElement(By.name("q")).clear();
  39.         driver.findElement(By.name("q")).sendKeys("Selenium automates browsers" + Keys.ENTER);
  40.  
  41.         (new WebDriverWait(driver, 6)).until(sizeOf(By.cssSelector(".srg .g"), 10));
  42.         (new WebDriverWait(driver, 6)).until(
  43.                 textToBePresentInElementLocated(By.cssSelector(".srg .g:first-of-type"), "Selenium automates browsers"));
  44.         /*
  45.             молодец, все важное схватила
  46.             раз мы не используем лейзи прокси веб элементы или списки элементов - значит используем локаторы
  47.             правильное решение
  48.             и да - вот этот длинный селектор ".srg .g:first-of-type" - тут и правда нам нужен -
  49.             чтоб с помошью локатора и стандартного кондишена реализовать ждущую проверку
  50.  
  51.             строка ".srg .g" - юзаешь несколько раз
  52.             можно вынести в переменную - чтоб было более DRY
  53.         */
  54.         actions.click(driver.findElement(By.cssSelector(".srg .g .r>a:first-of-type"))).perform();
  55.         /*
  56.             выше - мы проверили и дождались - что результатов 10
  57.             и что в первом результате - такой-то текст
  58.  
  59.             тут - уже спокойно можно обратиться к списку результатов (он ведь уже догрузился - в нужном нам объеме - так точно)
  60.             получить такой-то элемент этого списка
  61.             и у него - вызвать клик
  62.  
  63.             у объекта класса WebElement - есть метод click()
  64.             не нужна тебе переменная actions
  65.         */
  66.  
  67.         (new WebDriverWait(driver, 6)).until(
  68.                 textToBePresentInElementLocated(By.cssSelector(".homepage"), "What is Selenium?"));
  69.         assertEquals(driver.getCurrentUrl(), "http://www.seleniumhq.org/");
  70.         /*
  71.             хорошая новость - у селениума есть кондишен urlContains)
  72.             и тут - получишь одну проверку)
  73.  
  74.             кстати - по assertEquals
  75.             первый параметр = expected result
  76.             http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals(java.lang.Object, java.lang.Object)
  77.             это уже на будущее)
  78.         */
  79.     }
  80.  
  81.     public static ExpectedCondition<Boolean> sizeOf(final By elementsLocator, final int expectedSize) {
  82. /*
  83.     реализация кондишена - ок
  84.  
  85.     можно в рамках подготовки к следующему заданию - вынести кондишен в класс CustomConditions
  86.     раз штука универсальная - значит размести в ветке src \ main
  87.  
  88.     ну и тоже - в рамках подготовки к следующему заданию -
  89.     можно для строки кода про FollowLink
  90.     организовать такой метод. Параметр - индекс для линки
  91.     метод пусть в тест-классе живет
  92.  
  93.     также полезно будет и метод search(...)реализовать
  94.     тоже - в рамках подготовки к следующему заданию
  95.    
  96.     т к будет у нас - 2 тест-метода
  97.     и там и там понадобятся search и followLink
  98.  
  99.    
  100. */
Advertisement
Add Comment
Please, Sign In to add comment