Конвертировать webelement в строку Selenium - PullRequest
0 голосов
/ 12 марта 2019

Привет! В настоящее время я пытаюсь запустить тестирование селена для веб-сайта, однако я не могу преобразовать webelement в строку.ErrorMessage 1 = проверка, которая появляется, поэтому я хочу ErrorMessage1 = ErrorMessage, чтобы я знал, что тест прошел успешно.

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver",
            "C:\\Users\\lees2\\Downloads\\chromedriver_win32\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("http://psage.public.cs.qub.ac.uk/ForgotPassword.aspx");
    driver.manage().window().maximize();
    driver.findElement(By.id("MainContent_Email")).sendKeys("test@test.com");
    driver.findElement(By.name("ctl00$MainContent$BtnSend")).click();
    driver.findElement(By.className("validation-summary-errors"));
    WebElement ErrorMessage1 = driver.findElement(By.className("validation-summary-errors"));
    String ErrorMessage = "\r\n" + "                    Unrecognised email address\r\n" + "                ";
    driver.close();
    if (((String) ErrorMessage1).equalsIgnoreCase(ErrorMessage)) {
        System.out.println("Test successful");
    } else {
        System.out.println("Test failure");
    }

}

Ответы [ 4 ]

1 голос
/ 13 марта 2019

попробуйте ErrorMessage1.getText() сравнить значения.

Обновлен:

WebElement нельзя использовать для сравнения строковых значений. Он предоставляет метод getText(), который можно использовать для сравнения строковых значений.

1 голос
/ 12 марта 2019

Да, вы не можете сравнить WebElement со строковым значением. Вам нужно получить текстовое значение этого элемента, которое является строкой, а затем сравнить с ожидаемым строковым значением.

if (ErrorMessage1.getText().equalsIgnoreCase(ErrorMessage)) {
            System.out.println("Test successful");
        } else {
            System.out.println("Test failure");
        }

driver.close (); следует поставить в конце. Надеюсь, это поможет.

0 голосов
/ 13 марта 2019

Нет смысла преобразовывать WebElement в String, поскольку он не даст значимого результата.

Также нельзя сравнивать WebElement со строковым значением.

Чтобы получить строковое значение, необходимо использовать getText () после реализации.

getText () - это предопределенный метод Selenium WebDrivers, который используется для извлечения указанных элементов Текст.

Тип возвращаемого значения - Строка.

***************** Модифицированный код *****************************

public static void main(String[] args) {
    System.setProperty("webdriver.chrome.driver",
            "C:\\Users\\lees2\\Downloads\\chromedriver_win32\\chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("http://psage.public.cs.qub.ac.uk/ForgotPassword.aspx");
    driver.manage().window().maximize();
    driver.findElement(By.id("MainContent_Email")).sendKeys("test@test.com");
    driver.findElement(By.name("ctl00$MainContent$BtnSend")).click();
    driver.findElement(By.className("validation-summary-errors"));
    String ErrorMessage1 = driver.findElement(By.className("validation-summary-errors")).getText();
    String ErrorMessage = "\r\n" + "                    Unrecognised email address\r\n" + "                ";
    driver.close();
    if (((String) ErrorMessage1).equalsIgnoreCase(ErrorMessage)) {
        System.out.println("Test successful");
    } else {
        System.out.println("Test failure");
    }

}

Также вместо этого:

 if (((String) ErrorMessage1).equalsIgnoreCase(ErrorMessage)) {
        System.out.println("Test successful");
    } else {
        System.out.println("Test failure");
    }

Использовать assert:

import org.testng.Assert;
Assert.assertEquals(ErrorMessage1, ErrorMessage);
0 голосов
/ 12 марта 2019

Сообщение об ошибке, отображаемое веб-сайтом при вводе неверного идентификатора электронной почты, отображается в виде text в структуре html.Таким образом, вы можете просто использовать метод getText() для извлечения сообщения об ошибке из элемента.

Для вашего элемента вы можете получить текст, подобный следующему:

WebElement ErrorMessage1 = driver.findElement(By.className("validation-summary-errors"));   
String invalidEmailErrorMessage = ErrorMessage1.getText();

И затем вы можете напрямую сопоставить эту строку invalidEmailErrorMessage с сообщением, которое вы хотите проверить как:

if (invalidEmailErrorMessage.equalsIgnoreCase(ErrorMessage))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...