首页 > 解决方案 > 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>

标签: c#.netseleniumselenium-webdriverautomated-tests

解决方案


推荐阅读