2013-10-24 3 views
2

Я пытаюсь войти на веб-сайт с помощью Watin, и я хочу продолжить сеанс, чтобы я не продолжал регистрироваться каждый раз.Удерживать сеанс Watin

Однако каждый раз, когда я вызываю LogIn, строка if (browser.ContainsText(isLoggedInClass)) никогда не находит контент, который я могу видеть в открывшемся браузере.

Я добавил строку string checkHtmltoSeeIfClassExists = browser.Body.Parent.OuterHtml;, чтобы физически проверить строку, содержащуюся в html, который она есть.

Я немного застрял, поскольку кажется, что Ватин просто не выдерживает сессию? У кого-нибудь есть идеи, что не так?

код у меня до сих пор находится ниже

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 Framework. Поскольку WatiN поддерживает только single-threaded apartment state, вам необходимо вручную управлять сеансами.

Ссылка, приведенная выше, содержит пример кода для использования «AttachTo <>», но для того, чтобы быть тщательным, я также предоставил один ниже.

var IE = IE.AttachTo<IE>(Find.ByUrl(someURLHere));