簡體   English   中英

將webelement轉換為字符串Selenium

[英]Convert webelement to string 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(); 應該放在最后。希望這會有所幫助。

嘗試使用ErrorMessage1.getText()比較這些值。

更新:

WebElement不能用於比較字符串值。 它公開了可用於比較字符串值的getText()方法。

網站在輸入無效的電子郵件ID時顯示的錯誤消息在html結構中顯示為text 因此,您可以簡單地使用getText()方法從元素中獲取錯誤消息。

對於您的元素,可以得到如下文本:

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

然后,您可以將這個invalidEmailErrorMessage字符串與您要驗證的消息直接匹配,例如:

if (invalidEmailErrorMessage.equalsIgnoreCase(ErrorMessage))

將WebElement轉換為String是不明智的,因為它不會產生有意義的結果。

同樣,您無法將WebElement與字符串值進行比較。

要獲取字符串值,需要在實現后使用getText()。

getText()是Selenium WebDrivers的預定義方法,用於檢索指定元素Text。

返回類型 -字符串。

***************** 修改后的代碼 *****************************

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM