Java 将webelement转换为字符串Selenium

Java 将webelement转换为字符串Selenium,java,selenium,Java,Selenium,您好,我目前正在尝试为网站运行selenium测试,但是我无法将webelement转换为字符串。出现的ErrorMessage 1=验证,因此我需要ErrorMessage1=ErrorMessage,以便我知道测试成功 public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", "C:\\Users\\lees2\\Downloads\\chro

您好,我目前正在尝试为网站运行selenium测试,但是我无法将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");
    }

}

是的,您无法将
WebElement
与字符串值进行比较。您必须获取此WebElement的文本值,即字符串,然后与预期的字符串值进行比较

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

driver.close();应该放在末尾。希望这有帮助。

是的,您不能将
WebElement
与字符串值进行比较。您必须获取此WebElement的文本值,即字符串,然后与预期的字符串值进行比较

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

driver.close();应该放在最后。希望这有帮助。

网站在输入无效电子邮件id时显示的错误消息在html结构中显示为
文本。因此,您可以简单地使用
getText()
方法从元素中获取错误消息

对于元素,可以获得如下文本:

WebElement ErrorMessage1 = driver.findElement(By.className("validation-summary-errors"));   
String invalidEmailErrorMessage = ErrorMessage1.getText();
然后,您可以直接将此
invalidEmailErrorMessage
字符串与要验证的消息进行匹配,如:

if (invalidEmailErrorMessage.equalsIgnoreCase(ErrorMessage))

网站在输入无效电子邮件id时显示的错误消息在html结构中显示为
文本。因此,您可以简单地使用
getText()
方法从元素中获取错误消息

对于元素,可以获得如下文本:

WebElement ErrorMessage1 = driver.findElement(By.className("validation-summary-errors"));   
String invalidEmailErrorMessage = ErrorMessage1.getText();
然后,您可以直接将此
invalidEmailErrorMessage
字符串与要验证的消息进行匹配,如:

if (invalidEmailErrorMessage.equalsIgnoreCase(ErrorMessage))

请尝试
ErrorMessage1.getText()
比较这些值

更新:

 if (((String) ErrorMessage1).equalsIgnoreCase(ErrorMessage)) {
        System.out.println("Test successful");
    } else {
        System.out.println("Test failure");
    }
import org.testng.Assert;
Assert.assertEquals(ErrorMessage1, ErrorMessage);

WebElement
不能用于比较字符串值。它公开了可用于比较字符串值的方法。

请尝试比较值

更新:

 if (((String) ErrorMessage1).equalsIgnoreCase(ErrorMessage)) {
        System.out.println("Test successful");
    } else {
        System.out.println("Test failure");
    }
import org.testng.Assert;
Assert.assertEquals(ErrorMessage1, ErrorMessage);

WebElement
不能用于比较字符串值。它公开了可用于比较字符串值的
getText()
方法。

将WebElement转换为字符串是不明智的,因为它不会产生有意义的结果

此外,您不能将WebElement与字符串值进行比较

if (ErrorMessage1.getText().equalsIgnoreCase(ErrorMessage)) {
            System.out.println("Test successful");
        } else {
            System.out.println("Test failure");
        }
要获取字符串值,需要在实现后使用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");
    }
import org.testng.Assert;
Assert.assertEquals(ErrorMessage1, ErrorMessage);
使用断言:

 if (((String) ErrorMessage1).equalsIgnoreCase(ErrorMessage)) {
        System.out.println("Test successful");
    } else {
        System.out.println("Test failure");
    }
import org.testng.Assert;
Assert.assertEquals(ErrorMessage1, ErrorMessage);

将WebElement转换为字符串是不明智的,因为它不会产生有意义的结果

此外,您不能将WebElement与字符串值进行比较

if (ErrorMessage1.getText().equalsIgnoreCase(ErrorMessage)) {
            System.out.println("Test successful");
        } else {
            System.out.println("Test failure");
        }
要获取字符串值,需要在实现后使用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");
    }
import org.testng.Assert;
Assert.assertEquals(ErrorMessage1, ErrorMessage);
使用断言:

 if (((String) ErrorMessage1).equalsIgnoreCase(ErrorMessage)) {
        System.out.println("Test successful");
    } else {
        System.out.println("Test failure");
    }
import org.testng.Assert;
Assert.assertEquals(ErrorMessage1, ErrorMessage);

虽然这个代码片段是受欢迎的,并可能提供一些帮助,但它将是如何以及为什么解决这个问题。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。虽然欢迎使用此代码片段,并可能提供一些帮助,但它将说明如何以及为什么解决此问题。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请在回答中添加解释,并说明适用的限制和假设。