c# - C# Selenium 表分页测试
问题描述
我阅读了很多关于这个主题的评论,但问题是他们中的更多人使用了 jQuery 数据表并且页面没有重新加载。在我的情况下,我使用引导表,然后单击分页按钮,我呼吁采取行动并重新加载页面。我在这里使用 Selenium 并且分页是 .NET Html.PagedListPager。但是当我循环分页并尝试在第二次单击后单击每个按钮时会引发异常:“过时的元素引用:元素未附加到页面文档”。是否存在获取所有可点击分页按钮的最佳方法?为什么我在这里得到这个异常var text = button.Text;
?我的代码:
var paginationButtons = this.Driver
.FindElements(By.XPath("//ul[contains(@class,'pagination')]/li/a[contains(@href,'/?page')]"));
//Get All File names from table
var fileNames = new List<string>();
foreach (var button in paginationButtons)
{
var text = button.Text;
button.Click();
this.Driver.WaitForDocumentReady();
fileNames = this.Driver
.FindElements(By.XPath("//td[contains(@id,\"FileName\")]"))
.Select(element => element.Text)
.ToList();
if (fileNames.Any(f => !f.Contains("NT13-micro")))
{
result = false;
break;
}
paginationButtons= this.Driver
.FindElements(By.XPath("//ul[contains(@class,'pagination')]/li/a[contains(@href,'/?page')]"));
}
这是分页:
<div class="col-lg" id="filesListPager">
@Html.PagedListPager(Model.Files, page => Url.Action("Files",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter, restoreQueryString = false }),
new PagedListRenderOptions()
{
DisplayPageCountAndCurrentLocation = true,
PageCountAndCurrentLocationFormat = "Page {0} of {1}",
LinkToFirstPageFormat = "<< First",
LinkToPreviousPageFormat = "< Previous",
LinkToNextPageFormat = "Next >",
LinkToLastPageFormat = "Last >>",
Display = PagedListDisplayMode.Always,
DisplayItemSliceAndTotal = false
})
</div>
解决方案
推荐阅读
- oracle - 在 Oracle 中使用 CASE 将两行合并为一行
- callback - 在 Pyomo 中添加 Cplex 惰性约束
- mysql - MySQL程序不会让我设置变量值
- python - 为什么第二个多处理块的内存增加了这么多?
- android-studio - Android Studio:在我在 ratingBar 中选择星星后,评分未显示在 TextView 中
- java - 是否可以递归打印出受参数影响的模式?
- python - 如何遍历 Flask 中的每个会话?
- html - 使用 vba 从受密码保护的 Web 下载报告,但 Internet Explorer 报告 SEC7131:沙盒 iframe 的安全性以停止插入文本
- javascript - React:需要一些帮助来理解严格模式以及什么是副作用
- javascript - 无法读取未定义的属性