我试图使用页面对象selenium从jsp上的表中提取文本

时间:2015-01-20 14:06:45

标签: java jsp selenium

所以我使用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>

1 个答案:

答案 0 :(得分:0)

这样做的原因是'status'的ID超过${allPeople},因为您正在循环@FindBy(id = "status") private WebElement confirmedEmergencySignIn;,并且属性

{{1}}

不是一个集合。您需要将其设为集合或使Id唯一。