【问题标题】:Verifying search results from Coveo in Sitecore with C# Selenium使用 C# Selenium 在 Sitecore 中验证来自 Coveo 的搜索结果
【发布时间】:2017-04-05 09:47:18
【问题描述】:

我想测试以确保搜索显示正确的结果..

我已经尝试了下面的代码,其中包含 XPath 和 CssSelectors 的许多变体。

IWebElement body = driver.FindElement(By.XPath("//span[@class='CoveoQuerySummary']"));
return (body.Text.Contains(searchTerm)); 

我总是收到 NullReferenceException 错误。我正在逐步完成它,所以我知道这不是等待问题。

我已经尝试过这种方法,但没有走得很远。 (调试时出现同样的 NullReferenceException 错误。)

        IList<IWebElement> all = driver.FindElements(By.CssSelector(".CoveoResultList"));
        String[] allText = new String[all.Count];
        int i = 0;
        foreach (IWebElement element in all)
        {
            allText[i++] = element.Text;
        }

我们将不胜感激!

【问题讨论】:

  • coveo 的搜索结果是使用 Ajax 获取的。因此,您需要考虑完成请求。
  • 我正在调试器中逐步完成它...我可能需要考虑这一点 - 但我认为这不是我当前的问题:(
  • webber 是正确的,在向 REST 端点发出 XML HTTP 请求后,搜索结果填充了 DOM。但是,Coveo for Sitecore 搜索页面 DOM 甚至在 JavaScript 代码初始化之前就包含您要查找的 HTML 元素。我知道他们在一个具有display:none 风格的 div 中。也许 Selenium 默认不允许你获取隐藏元素?

标签: c# selenium sitecore coveo


【解决方案1】:
        var temp = driver.FindElement(By.ClassName("CoveoQuerySummary"), 10);
        IWebElement body = driver.FindElement(By.ClassName("CoveoResultList"));
        if (body.Text.Contains(searchtext))
            result = true;
        Assert.IsTrue(result);

上面的代码对我有用(终于!!!)——我认为我更大的问题是/正在尝试使用(并同时学习)页面对象模型。如果我将它们放在 PageObject 文件中,上面的“FindElement”调用总是返回 NullReferenceException。我仍在学习并知道这可能需要重构 - 但它有效。

仍然感谢任何提示!

【讨论】:

    猜你喜欢
    • 2016-12-18
    • 2022-01-12
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 2018-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多