Перейти к содержимому

Selenium WebDriver: полное руководство
онлайн, начало 19 октября
Логи как инструмент тестировщика
онлайн, начало 22 октября
Школа для начинающих тестировщиков
онлайн, начало 122 октября
Тестирование REST API
онлайн, начало 22 октября
Фотография

При аутентификации в почте есть форма "Я не робот"


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 Aleksey_2

Aleksey_2

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 06 Май 2018 - 13:15

Привет всем. Подскажите кто разбирается.

 

Пытаюсь написать автотест: открыть браузер, открыть почту, ввести логин/пароль, войти, убедиться что вошёл в почтовый ящик. Кусок кода:

// Ввожу логин:
WebElement loginField = driver.findElement(By.id("Login"));
loginField.sendKeys("vasya_pupkin");

// Ввожу пароль:
WebElement passwordField = driver.findElement(By.id("Pswd"));
passwordField.sendKeys("qwerty12345");

// Жму кнопку Войти:
WebElement loginButton = driver.findElement(By.cssSelector(".button__content"));
loginButton.click();

// Убеждаюсь что попал в свой почтовый ящик:
WebElement profileUser = driver.findElement(By.cssSelector(".login-button__user"));
String mailUser = profileUser.getText();
Assert.assertEquals("vasya_pupkin@mail.ru", mailUser);

Но я не могу разобраться: там перед тем как войти надо поставить галку "Я не робот" и потом выбрать какие-нибудь картинки (например картинки где изображен дорожный знак). А так как в тесте я это не отразил то на странице авторизации появляется сообщение "Пройдите проверку Я не робот", а сам тест падает. Как это в коде изобразить?

 

Скриншот приложил.

 

Прикрепленные файлы


  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 742 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 06 Май 2018 - 13:51

Если чекбокс еще можно умудриться проставить, то выбрать автоматически подходящие картинки вы не сможете в любом случае. Собственно для этого и разработан механизм капчи (я не робот).
  • 3

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#3 Aleksey_2

Aleksey_2

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 06 Май 2018 - 14:57

Если чекбокс еще можно умудриться проставить, то выбрать автоматически подходящие картинки вы не сможете в любом случае. Собственно для этого и разработан механизм капчи (я не робот).

 

Спасибо за подсказку. Я сделал так: взял совсем другую почту, в которой нет при входе данной формы "Я не робот". Зайти получилось и убедиться что я попал в нужный ящик.

 

Теперь хочу Выйти из ящика и закрыть браузер. Написал так:

@AfterClass
public static void tearDown() {
    // Нажать кнопку Выйти:
    WebElement logoutButton = driver.findElement(By.id("td_header_right1"));
    logoutButton.click();        

    // Закрыть браузер:
    driver.quit();
}

Но тут такая проблема. Сам элемент #td_header_right1 содержит внутри себя не только кнопку Выйти, а 3 элемента:

  - логин@почта

  - картинка в виде вертикальной палочки

  - сама ссылка Выход

 

Можете сказать, как мне написать в коде, что именно надо на Выход нажать?

Прикрепленные файлы


  • 0

#4 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 742 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 06 Май 2018 - 15:09

Вариантов много, например:

By.linkText("Выход")
By.cssSelector("a[href='logout']")


  • 1

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#5 Aleksey_2

Aleksey_2

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 06 Май 2018 - 16:01

 

Вариантов много, например:

By.linkText("Выход")
By.cssSelector("a[href='logout']")

спс. теперь всё заработало.


  • 0

#6 Aleksey_2

Aleksey_2

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 09 Май 2018 - 09:18

 

Вариантов много, например:

By.linkText("Выход")
By.cssSelector("a[href='logout']")

 

а можете ещё один небольшой момент подсказать? вот мой итоговый код:

public class FirstTest {

    private static WebDriver driver;

    @BeforeClass
    public static void setup(){
        System.setProperty("webdriver.chrome.driver",
                "C:\\Users\\alexw\\IdeaProjects\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://mail.ngs.ru/");
    }

    @Test
    public void userLogin(){
        // код
    }

    @AfterClass
    public static void tearDown() {
        // код
    }

}

Почему для создания объекта драйвера в данном коде предлагается писать

driver = new ChromeDriver();

а не

WebDriver driver = new ChromeDriver();

2) И что означает вторая строчка:

private static WebDriver driver;

  • 0

#7 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 742 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 09 Май 2018 - 09:51

Собственно со второго и нужно начинать, "private static WebDriver driver" объявляет переменную (приватную статическую), поэтому в дальнейшем тип переменной указывать не надо. Это основы программирования.


  • 2

http://starbugss.blogspot.ru - "Звездные баги", мой блог.


#8 Aleksey_2

Aleksey_2

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 22 Май 2018 - 14:31

Собственно со второго и нужно начинать, "private static WebDriver driver" объявляет переменную (приватную статическую), поэтому в дальнейшем тип переменной указывать не надо. Это основы программирования.

ок. спасибо


  • 0


Selenium 2.0: стартовый уровень
онлайн, начало 9 ноября
Программирование на Java для тестировщиков
онлайн, начало 12 октября
Автоматизация функционального тестирования
онлайн, начало 5 октября
Selenium WebDriver: полное руководство
онлайн, начало 19 октября



Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Яндекс.Метрика
Реклама на портале