我有这样的事情:
<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:无法找到元素:
感谢您的帮助。
答案 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")));
希望它有所帮助.. :)