所以我使用selenium页面对象,我发现了正确的行并给它一个Id,但它一直在控制台中给我一个空指针,但我不知道什么是返回null。
这是页面,
@FindBy(id = "status")
private WebElement confirmedEmergencySignIn;
@FindBy(className = "navbar-brand")
private WebElement dashboardLink;
public EmergenciesInListPage(WebDriver driver) {
super(driver, PageTitle.EMERGENCYINLIST, PagePath.EMERGENCYOUTLIST);
// COMPULSORY
this.driver = driver;
PageFactory.initElements(driver, this);
}
public Boolean checkEmergencySinedIn(String textToCheck) {
return confirmedEmergencySignIn.getText().equals(textToCheck);
}
这是硒测试,
@Test
public void testToShowAllUsersThatAreSignedinOnTheEmergencyList() {
quickSignIn();
emergencyPage = dashboardPage.clickEmergencyListLink();
emergencyPage.clickInOutDropdown();
emergencyPage.clickSetStatusInLink();
assertTrue(emergenciesInListPage.checkEmergencySinedIn(STATUS_IN));
assertTrue(isOnThisPage(PagePath.EMERGENCYINLIST));
}
这是包含该表的Jsp部分。 当数据存在时,表格会自行填充
<div class = "containter">
<div class = "table">
<table class="table table-striped">
<tbody>
<th> First Name </th>
<th> Last Name </th>
<th> Status </th>
<c:forEach items="${allPeople}" var="P">
<tr>
<td>${P.user.forenames}</td>
<td>${P.user.surname}</td>
<td id="status">${P.status}</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
答案 0 :(得分:0)
这样做的原因是'status'
的ID超过${allPeople}
,因为您正在循环@FindBy(id = "status")
private WebElement confirmedEmergencySignIn;
,并且属性
{{1}}
不是一个集合。您需要将其设为集合或使Id唯一。