2016-11-21 101 views
0

我想测试,以确保搜索时显示正确的结果..验证搜索结果与C#硒

我试过下面的代码用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; 
     } 

任何和所有帮助,将不胜感激!

+0

使用Ajax获取coveo的搜索结果。所以你需要考虑完成请求。 – webber

+0

我在调试器中逐步完成它...我可能需要对此进行说明 - 但我不认为这是我当前的问题:( – Grey

+0

webber是正确的,DOM在XML HTTP请求后填充了搜索结果但是,Coveo for Sitecore搜索页面DOM包含了您在使用JavaScript代码初始化之前查找的HTML元素,我知道它们位于具有'display:none'风格的div中,也许Selenium没有'你可以默认获得隐藏的元素吗? – jflheureux

回答

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。我仍然在学习&知道这可能需要重构 - 但它的工作原理。

任何提示仍然感激!