2013-10-24 46 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));