【问题标题】:How to Wait for search data to load in table if the table rows disappears with search query ? Selenium c#如果表行随搜索查询消失,如何等待搜索数据加载到表中?硒 c#
【发布时间】:2020-01-25 13:03:30
【问题描述】:

表在第一次打开时加载数据我创建了一个获取随机数据并搜索它的方法,清除旧数据需要时间然后显示“无结果”然后加载新的搜索结果,表的第一行始终可见,因为它会显示“无结果”一段时间然后显示所有行一旦加载数据,我如何执行等待数据清除然后等待新数据加载的等待 我尝试使用下面的代码,但即使在所有元素加载后仍然等待

public void waitForSearchResult()
{
    var wait = new WebDriverWait(Driver, new TimeSpan(0, 1, 0));
    wait.IgnoreExceptionTypes(typeof(NoSuchElementException));
    try
    {
        wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.VisibilityOfAllElementsLocatedBy(Driver.FindElements(By.XPath("//manual-map-bddl-list//tbody/tr"))));
    }
    catch (Exception )
    {

    }

【问题讨论】:

  • 你能把HTML代码贴出来吗?很难从屏幕截图中读取代码。看起来您的 XPath 正在搜索 <manual-map-bddl-list> 标记,但这不是有效的 HTML 标记。

标签: c# jquery selenium webdriverwait webautomation


【解决方案1】:

我会尝试像这样使用等待:

wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.XPath("//manual-map-bddl-list//tbody/tr[2]")));

因此,您的表格中始终有一行代表表格标题,您最好等待其他一些行。我的假设是,如果您的表将加载第二行,则意味着所有数据都已呈现。

此方法还会忽略表头(将第二个 tr 视为第一个数据行)行,这样就不会满足空结果的条件。

【讨论】:

  • 但我只能在第一行获得一条数据记录,因此尽管我获得了数据,但案例将失败。我
  • 我不懂你。如果你得到一个记录,这将意味着搜索完成并且你有一些结果。这将是一种标志,通知您可以继续解析表格。这可能适用于数据量相当小的情况。当然,如果您将 10mb 的数据加载到表中,那么在显示第一个记录时,可能并非所有记录都会完全加载。
  • R 正在检查是否获得了匹配的查询结果,因此它可能是 1 行或更多行,并且在数据加载并替换此文本之前,我始终显示 1 行并显示“无结果”文本,所以如果我在第一行使用等待,它总是在那里,如果我在第二行使用它,那么如果我只有 1 个匹配结果,它将失败
  • “无结果”时能不能分享一下表格的html?
  • R,我已为“无结果”表附加了 html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多