2016-11-21 89 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。我仍然在學習&知道這可能需要重構 - 但它的工作原理。

任何提示仍然感激!