2010-08-25 43 views
0

基於this article,我寫了一個實現Watin.Core.interfaces.IFindByDefaultFactory的自定義類,但我認爲我沒有正確將其分配給watin設置,因爲它從不使用。watin - Settings.FindByDefaultFactory - 似乎沒有使用我自定義的FindByDefaultFactory

基本上,我應該在哪裏/什麼時候分配給Settings.FindByDefaultFactory?我在我的測試安裝程序和文本夾具的構造函數中嘗試過,但都沒有導致我的自定義類被使用。測試仍然運行,但我必須使用完整的asp.net標識。

我在nUnit 2.5.2.9222的VS2008中使用Watin 2.0.15.928。我以管理員身份運行visual studio,只要不依賴自定義查找邏輯,測試就能成功運行。

這裏是我的文字夾具開始的樣子,我在那裏設置FindByDefaultFactory

namespace Fundsmith.Web.Main.BrowserTests 
{ 
    [TestFixture] 
    class WatinHomepageTests 
    { 
     private IE _ie; 
     [SetUp] 
     public void Setup() 
     { 
      Settings.FindByDefaultFactory = new FindByAspIdFactory(); 
      _ie = new IE("http://localhost/somepage.aspx"); 
     } 
//etc etc... 

而這就是我的自定義查找默認出廠樣子(簡體),不幸的是,它永遠不會被調用。

using System.Text.RegularExpressions; 
using WatiN.Core; 
using WatiN.Core.Constraints; 
using WatiN.Core.Interfaces; 

namespace Fundsmith.Web.Main.BrowserTests 
{ 
    public class FindByAspIdFactory : IFindByDefaultFactory 
    { 
     public Constraint ByDefault(string value) 
     { 
// This code is never called :(

// My custom find by id code to cope with asp.net webforms ids... 
      return Find.ById(value); 
     } 

     public Constraint ByDefault(Regex value) 
     { 
      return Find.ById(value); 
     } 
    } 
} 

編輯:事後的額外信息。

根據我的說法,(見下面的答案),結果我發現Watin找到元素的方式是錯誤的。我明確地調用了Find.ById,而不是讓默認動作發生。所以我重新分配了默認值,但之後無法使用它!

[Test] 
public void StepOneFromHomepageShouldRedirectToStepTwo() 
{ 
    _ie.TextField(Find.ById("textBoxId")).TypeText("100"); 
     //Other test stuff... 
} 

回答

0

好吧,我已經想通這一個,這是我作爲一個白癡,並明確調用Find.ById方法,而不是讓默認動作發生。看來測試設置是設置FindByDefaultFactory的好地方。

即,我是做這個(錯誤):

[Test] 
    public void StepOneFromHomepageShouldRedirectToStepTwo() 
    { 
     _ie.TextField(Find.ById("textBoxId")).TypeText("100"); 
      //Other test stuff... 
    } 

當我本來應該簡單地做這個。 (如果沒有明確的「Find.ById」)

[Test] 
    public void StepOneFromHomepageShouldRedirectToStepTwo() 
    { 
     _ie.TextField("textBoxId").TypeText("100"); 
      //Other test stuff... 
    } 

這不僅是我愚蠢,但我並沒有包括這在我原來的問題,所以這將是不可能讓其他人弄明白對於某些。雙掌拍我。

相關問題