2

Watin を使用して Web サイトにログインしようとしていますが、セッションを維持したいので、毎回ログインし続ける必要はありません。

ただし、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();
            }

        }

    }

}
4

1 に答える 1

2

必要なメカニズムは、WatiN フレームワークに組み込まれているAttachTo<>関数です。WatiN はシングルスレッドのアパートメント状態のみをサポートするため、セッションを手動で管理する必要があります。

上記のリンクには 'AttachTo<>' を使用するためのコード例がありますが、徹底するために、以下にも 1 つ提供しています。

var IE = IE.AttachTo<IE>(Find.ByUrl(someURLHere));
于 2013-10-27T00:41:36.950 に答える