selenium webdriver обнаруживает всплывающие сообщения об ошибках пользовательского интерфейса - PullRequest
0 голосов
/ 11 июля 2020

У меня тестируется это приложение реакции с использованием selenium webdriver.

если мой логин неправильный, как мне определить текст с помощью selenium webdriver? Я не могу найти код / ​​выяснить, как перехватить всплывающее сообщение. 'ошибка аутентификации'

@Test
public void failed_login() {
    System.setProperty("webdriver.chrome.driver",
            "C:\\Users\\rahul\\Downloads\\chromedriver_win32_83\\chromedriver.exe");
    
    WebDriver driver = new ChromeDriver();
    driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
    driver.get("http://testingapp.workspez.com");
    driver.manage().window().maximize();
    WebElement username = driver.findElement(By.id("field_email"));
    WebElement password = driver.findElement(By.id("field_password"));
    WebElement login = driver.findElement(By.xpath("//*[text()='Log In']"));
    
    username.sendKeys("wrongemail@gmail.com");
    password.sendKeys("wrongpassword");
    login.click();
    try {
        Thread.sleep(2000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    driver.manage().timeouts().implicitlyWait(120, TimeUnit.SECONDS);
    String url = driver.getCurrentUrl();
    assertEquals(url, "http://testingapp.workspez.com/login");
}

введите описание изображения здесь

Ответы [ 3 ]

0 голосов
/ 11 июля 2020

После выполнения click вы можете использовать Explicit Wait:

try{
    
    WebDriverWait wait = new WebDriverWait(driver, 10); //10 seconds
    WebElement messageElement = wait.until(
                                    ExpectedConditions.visibilityOfElementLocated(
                                        By.xpath("//*[@id = 'client-snackbar']")
                                    )
                                );

    //if reach here, means the error is visible.
    System.out.println(messageElement.getText());

}catch(TimeoutException ignored){ 

    //if trigger timeoutexception
    //that means the element with message is not visible, that means no error

}

Это будет ждать 10 секунд, пока элемент станет видимым.

Если он не виден, он выдаст TimeoutException, которое вы можете просто проигнорировать.

Это означает, что ошибка не была видна в первые 10 секунд после щелчка.

Вы можете изменить время, как хотите.

0 голосов
/ 11 июля 2020

Вы можете найти указатель для этого тост-сообщения. Для поиска веб-элемента

  1. Go в вашем логине.
  2. Введите свои недопустимые учетные данные.
  3. Нажмите F12 и go для консоли / Источники
  4. Щелкните "Войти", чтобы получить сообщение.
  5. Нажмите F8, чтобы приостановить его. Теперь вы можете проверить свой элемент.

Итак, из webelement вы можете получать текст с помощью метода gettext (). Вы можете применить явное ожидание для ожидания сообщения об ошибке.

0 голосов
/ 11 июля 2020

Вы можете использовать приведенный ниже код, чтобы проверить, отображается ли authentication failed всплывающее окно или нет:

List<WebElement> popUpElement = driver.findElements(By.id("client-snackbar");
if(popUpElement.size() != 0){
  System.out.println("Pop up is Present "+popUpElement.get(0).getText());
}else{
  System.out.println("Pop up is Absent");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...