java.lang.AssertionError:找到的值显示为空

Posted

技术标签:

【中文标题】java.lang.AssertionError:找到的值显示为空【英文标题】:java.lang.AssertionError: found value shows as null 【发布时间】:2019-07-27 16:38:03 【问题描述】:

我想检查文本字段值是否与我在代码中提到的预期值相同

这是我需要值的文本字段

input type="text" value="sadas" class="mdl-textfield__input" id="last_name" name="last_name" placeholder="输入姓氏"

错误我得到了什么,

TestNG 错误信息显示如下, java.lang.AssertionError: 预期 [6234] 但发现 [] 并且没有为控制台打印任何内容

我已尝试使用“Assert.assertTrue(lastName.equals("lastName : 6234"));”太

@Test
    public void tc001()        
    driver.get(baseUrl);
    driver.findElement(By.xpath("//input[@name='email']")).click();
    driver.findElement(By.xpath("//input[@name='email']")).clear(); driver.findElement(By.xpath("//input[@name='email']")).sendKeys("x@gmail.com");
    driver.findElement(By.xpath("//input[@name='password']")).clear();driver.findElement(By.xpath("//input[@name='password']")).sendKeys("123456");
    driver.findElement(By.xpath("(.//*[normalize-space(text()) and  normalize-space(.)='Forgot Your Password?']) [1]/preceding::button[1]")).click();
    driver.findElement(By.linkText("Nadee")).click();
    driver.findElement(By.linkText("Profile")).click();
    String lastName = driver.findElement(By.xpath("//input[@name='last_name']")).getText();
    Assert.assertEquals(lastName ,"6234");
    System.out.println(lastName);   
    driver.findElement(By.linkText("Log Out")).click();
    

我该如何解决这个问题?为什么当预期值与找到的值相同时我会收到此错误?(手动检查系统时)

【问题讨论】:

【参考方案1】:

在获取姓氏字段的值之前尝试添加等待。您在获取姓氏值之前单击了一个链接,该页面可能未完全加载。

driver.findElement(By.linkText("Profile")).click();
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@name='last_name']")));
String lastName = driver.findElement(By.xpath("//input[@name='last_name']")).getAttribute("value");
system.out.println("Last Name value is: "+ lastName); // check the output on console too
Assert.assertEquals(lastName ,"6234");

【讨论】:

Earler,我已经尝试过和你一样的代码,但它也返回相同的结果。我也试过你的,它也显示为空值 WebDriverWait textfeild = new WebDriverWait(driver, 120); textfeild.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@id='last_name']"))); String lastName = driver.findElement(By.xpath("//input[@name='last_name']")).getText(); Assert.assertEquals(lastName,"6234"); System.out.println(lastName); 试试这个 String lastName = driver.findElement(By.xpath("//input[@name='last_name']")).getAttribute("value");

以上是关于java.lang.AssertionError:找到的值显示为空的主要内容,如果未能解决你的问题,请参考以下文章

java.lang.AssertionError:找到的值显示为空

mockMVC 方法 GET java.lang.AssertionError:预期状态:200 实际:500

更新到 Android Studio 4.1 时出现 java.lang.AssertionError

Mvn clean package 给出了一个意外的 java.lang.AssertionError

EasyMock set方法报错: java.lang.AssertionError

AndroidX.Test ActivityScenario: java.lang.AssertionError: Activity 永远不会变为请求状态“[RESUMED]”(最后一个生命周期转换