Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pom.xml
- /*
- точно можно попроще)
- попробуй вариант полаконичнее)
- с 2.53.1 - тоже все ок должно быть - проверь
- */
- <dependencies>
- <dependency>
- <groupId>org.seleniumhq.selenium</groupId>
- <artifactId>selenium-java</artifactId>
- <version>2.53.0</version>
- </dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.12</version>
- </dependency>
- </dependencies>
- **********************************************
- public class GoogleTest {
- ...
- Actions actions = new Actions(driver);
- /*
- думаю - тебе не понадобится такая переменная)
- а вот переменную wait = new WebDriverWait(driver, 6)); - я бы завела)
- */
- @Test
- public void testSearchAndFollowLink() {
- driver.get("http://google.com/ncr");
- driver.findElement(By.name("q")).clear();
- driver.findElement(By.name("q")).sendKeys("Selenium automates browsers" + Keys.ENTER);
- (new WebDriverWait(driver, 6)).until(sizeOf(By.cssSelector(".srg .g"), 10));
- (new WebDriverWait(driver, 6)).until(
- textToBePresentInElementLocated(By.cssSelector(".srg .g:first-of-type"), "Selenium automates browsers"));
- /*
- молодец, все важное схватила
- раз мы не используем лейзи прокси веб элементы или списки элементов - значит используем локаторы
- правильное решение
- и да - вот этот длинный селектор ".srg .g:first-of-type" - тут и правда нам нужен -
- чтоб с помошью локатора и стандартного кондишена реализовать ждущую проверку
- строка ".srg .g" - юзаешь несколько раз
- можно вынести в переменную - чтоб было более DRY
- */
- actions.click(driver.findElement(By.cssSelector(".srg .g .r>a:first-of-type"))).perform();
- /*
- выше - мы проверили и дождались - что результатов 10
- и что в первом результате - такой-то текст
- тут - уже спокойно можно обратиться к списку результатов (он ведь уже догрузился - в нужном нам объеме - так точно)
- получить такой-то элемент этого списка
- и у него - вызвать клик
- у объекта класса WebElement - есть метод click()
- не нужна тебе переменная actions
- */
- (new WebDriverWait(driver, 6)).until(
- textToBePresentInElementLocated(By.cssSelector(".homepage"), "What is Selenium?"));
- assertEquals(driver.getCurrentUrl(), "http://www.seleniumhq.org/");
- /*
- хорошая новость - у селениума есть кондишен urlContains)
- и тут - получишь одну проверку)
- кстати - по assertEquals
- первый параметр = expected result
- http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals(java.lang.Object, java.lang.Object)
- это уже на будущее)
- */
- }
- public static ExpectedCondition<Boolean> sizeOf(final By elementsLocator, final int expectedSize) {
- /*
- реализация кондишена - ок
- можно в рамках подготовки к следующему заданию - вынести кондишен в класс CustomConditions
- раз штука универсальная - значит размести в ветке src \ main
- ну и тоже - в рамках подготовки к следующему заданию -
- можно для строки кода про FollowLink
- организовать такой метод. Параметр - индекс для линки
- метод пусть в тест-классе живет
- также полезно будет и метод search(...)реализовать
- тоже - в рамках подготовки к следующему заданию
- т к будет у нас - 2 тест-метода
- и там и там понадобятся search и followLink
- */
Advertisement
Add Comment
Please, Sign In to add comment