Selenium,Java-按类查找表(没有ID)

时间:2016-07-21 09:08:09

标签: java selenium webdriver

我有这样的事情:

  <table class="table">
    <thead>
    <tr>
        <th>Role</th>
        <th>Description</th>
        <th>Access</th>
        <th>Grant</th>
    </tr>
    </thead>
    <tbody>
    <tr ng-repeat="role in roles">
        <td>{{role.role_name}}</td>
        <td>{{role.role_description}}</td>
        <td><input type="checkbox" ng-model="role.allow_access" ng-change="updateAllow(role)" ng-disabled="!(role.grantor_allow_grant == 'Y' || haveAllAdminRoles)" ng-true-value="'Y'" ng-false-value="'N'"></td>
        <td><input type="checkbox" ng-model="role.allow_grant" ng-change="updateAllow(role)"  ng-disabled="!(role.grantor_allow_grant == 'Y' || haveAllAdminRoles)" ng-true-value="'Y'" ng-false-value="'N'"></td>
    </tr>
    </tbody>
</table>

如何使用WebDriver或WebConnector找到此表?我试过这样的事:

WebElement table = driver.findElement(By.className("table"));

它没有用,我收到了错误:

  

org.openqa.selenium.NoSuchElementException:无法找到元素:

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

这可能是由于时间问题造成的。您可以使用显式等待来等待表加载或显示

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement table = wait.until(ExpectedConditions.presenceOfElementLocated(By.className("table")));
// or
WebElement table = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("table")));

答案 1 :(得分:1)

可能是在您要找到桌子的时候,由于互联网速度慢或其他原因,它无法在页面上看到。要确保页面上的表格可见,请尝试使用WebDriverWait查找表格,如下所示: -

WebDriverwait wait = new WebDriverwait(driver, 10);
WebElement table = wait.until(Expectedconditions.visibilityOfElementLocated(By.className("table")));

希望它有所帮助.. :)