2013-10-24 279 views
2

我試圖使用Watin登錄到網站,並且我想保持會話,因此我不會每次都保持登錄狀態。讓Watin會話保持活動狀態

但是,每次我通過LogIn行if (browser.ContainsText(isLoggedInClass))都找不到我在打開的瀏覽器中看到的內容。

我已經添加了行string checkHtmltoSeeIfClassExists = browser.Body.Parent.OuterHtml;來物理檢查字符串是否包含在html中。

我有點卡住了,因爲看起來Watin不會堅持會議?有沒有人有任何想法有什麼問題?

我到目前爲止的代碼如下

using WatiN.Core; 

namespace ProjectXYZ 
{ 
    class Navigate 
    { 
     private IE browser; 

     public void LogIn() 
     { 
      const string isLoggedInClass = "gwt-Hyperlink optionLink optionLink_myAccount"; 
      if (browser == null) 
       browser = new IE("https://www.somewebsite.com"); 

      string checkHtmltoSeeIfClassExists = browser.Body.Parent.OuterHtml; 

      if (browser.ContainsText(isLoggedInClass)) 
      { 
       string test = "class found!"; 
      } 
      else 
      { 
       browser.TextField(Find.ByName("username")).Value = xx.un; 
       browser.TextField(Find.ByName("userpass")).Value = xx.pw; 
       browser.Button(Find.ByTitle("Login")).Click(); 
      } 

     } 

    } 

} 
+3

您是否嘗試過使用'AttachTo <>'函數重新分配瀏覽器會話?關鍵要記住的是'WatiN'不支持'MTA'。 – Brian

+0

感謝它正在使用AttachTo <>。如果您添加該答案,我會接受。謝謝。 – user3357963

+0

下面添加了答案。我很高興我可以幫助:) – Brian

回答

2

你想要的機制是內置在華廷框架的AttachTo<>功能。由於WatiN僅支持single-threaded apartment state,因此您必須手動管理會話。

上面的鏈接有一個使用'AttachTo <>'的代碼示例,但爲了徹底起見,我還提供了下面的代碼。

var IE = IE.AttachTo<IE>(Find.ByUrl(someURLHere)); 
相關問題