1

私は、WatiN を使用して Web サイトをテストし、プロセスを自動化しています。Web サイトは正常に開くことができますが、選択リストからオプションを選択しようとすると問題が発生します。

<select id="form:Dropdown" name="form:Dropdown" size="1" title="Select Option"> <option value="0">Select Code</option>
    <option value="234890/NA/1">23FA4890</option>
    <option value="237014/NA/1">23FA7014</option>
</select>

コード:

            Settings.AttachToBrowserTimeOut = 240;
            Settings.WaitUntilExistsTimeOut = 240;
            Settings.WaitForCompleteTimeOut = 240;    

            browser = new IE();
            browser.GoTo(url);
            browser.WaitForComplete();
            //Thread.Sleep(10000);
            browser.SelectList(Find.ById("form:Dropdown")).WaitUntilExists(); //ERROR OCCURS HERE
            SelectList dList = browser.SelectList(Find.ById("form:Dropdown"));
            dList.Select("23FA4890");

これは機能するはずですが、「要素が表示されるまで240秒待機中にタイムアウト」というエラーが表示され続けます。

4

1 に答える 1

0

ページが完全に読み込まれるまで はすでにブロックされるためWaitUntilExists、呼び出す必要はないと思います。WaitForCompleteこれがあなたの質問に完全に答えるわけではないことは承知していますが、私が本番環境で 1 年以上使用してきたコードの例を示したいと思います。

iframe 内からフレームを取得し、ドロップダウン リストから「ID」の値を選択していることに注意してください。

Regex regex = new Regex(@"^.*\/globalframeset\.esp.*$");
using (var browser = IE.AttachTo<IE>(Find.ByUrl(regex), 12))
{
    if (browser != null)
    {
        browser.AutoClose = false;

        var iFrame = browser.Frame(Find.ById("GlobalWrapper"));

        if (iFrame != null)
        {
            var frame = iFrame.Frame(Find.ByName("frGlobalNav"));

            if (frame != null)
            {
                frame.TextField(Find.ByName("findtext")).Value = person.MedicalRecordNumber;

                // This code is setting the DDL called "filtertype" to a value of "ID"
                frame.SelectList(Find.ByName("filtertype")).SelectByValue("ID");

                Regex buttonRegex = new Regex(@"^.*\/go_text\.gif.*$");
                frame.Image(Find.BySrc(buttonRegex)).ClickNoWait();
            }
        }

        browser.BringToFront();
    }
}
于 2013-04-11T18:28:44.207 に答える