【问题标题】:Keep Watin session alive保持 Watin 会话活跃
【发布时间】:2013-10-27 08:55:36
【问题描述】:

我正在尝试使用 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();
            }

        }

    }

}

【问题讨论】:

  • 您是否尝试过使用AttachTo<> 函数重新分配浏览器会话?要记住的关键是WatiN 不支持MTA
  • 感谢它现在可以使用 AttachTo。如果您将其添加为答案,我会接受。谢谢。
  • 答案添加在下面。我很高兴能帮上忙:)

标签: c# watin


【解决方案1】:

您想要的机制是 WatiN 框架中内置的 AttachTo<> 函数。由于 WatiN 仅支持 single-threaded apartment state,因此您必须手动管理会话。

上面的链接有一个使用 'AttachTo' 的代码示例,但为了完整起见,我在下面也提供了一个。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多