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

Фотография

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


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

#1 Aleksey_2

Aleksey_2

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

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

Отправлено 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
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


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

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

#3 Aleksey_2

Aleksey_2

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

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

Отправлено 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
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


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

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

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


  • 1

#5 Aleksey_2

Aleksey_2

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

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

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

 

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

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

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


  • 0

#6 Aleksey_2

Aleksey_2

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

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

Отправлено 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
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 09 мая 2018 - 09:51

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


  • 2

#8 Aleksey_2

Aleksey_2

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

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

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

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

ок. спасибо


  • 0


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

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