Watin не распознает диалоговое окно подтверждения OK - PullRequest
0 голосов
/ 26 августа 2011

Я недавно начал новую работу по тестированию, и мой предшественник запустил пакет автоматизации с использованием watin, с которым у меня не было предыдущего опыта, поэтому мне жаль, если я не могу дать вам соответствующую информацию, когда я запускаюего установка (против IE 8.0.7601.17514), кажется, застревает, когда появляется диалоговое окно подтверждения, и следующим шагом является нажатие ok

//Enter invalid data
            var confirmDialog = new ConfirmDialogHandler();
            IE.DialogWatcher.Add(confirmDialog);
            using (new UseDialogOnce(IE.DialogWatcher, confirmDialog))
            {
                //Click to reset data entry
                IE.Page<DataEntryPage>().ResetVoucherButton.ClickNoWait();
                confirmDialog.WaitUntilExists(40000);
                confirmDialog.OKButton.Click();
                WaitForPostBackToComplete.WaitForAsyncPostBackToComplete(IE);
            }

Он просто висит там и ожидает прохождения периода ожидания.

Я думал, что проблема была в моем файле IEStaticInstanceHelper.cs, но, похоже, это правильно

using System.Threading;
using WatiN.Core;

namespace WatiN
{
    public class IEStaticInstanceHelper
    {
        private IE _ie;
        private int _ieThread;
        private string _ieHwnd;

        public IE IE
        {
            get
            {
                var currentThreadId = GetCurrentThreadId();
                if (currentThreadId != _ieThread)
                {
                    _ie = IE.AttachTo<IE>(Find.By("hwnd", _ieHwnd));
                    _ieThread = currentThreadId;
                }
                return _ie;
            }
            set
            {
                _ie = value;
                _ieHwnd = _ie.hWnd.ToString();
                _ieThread = GetCurrentThreadId();
            }
        }

        private int GetCurrentThreadId()
        {
            return Thread.CurrentThread.GetHashCode();
        }
    }
}

Я недавно восстановил свой компьютер (ну, мой системный администратор) и это неЭто проблема до того, как она была восстановлена, но я не могу думать, что могло измениться

Любая помощь будет принята с благодарностью

Редактировать

Iна самом деле не нужно было менять код, мне просто пришлось обновить мою версию Watin, поскольку она не могла справиться с тем, что когда-либо отличалось между более ранними диалоговыми окнами IE 8 и более новыми.

1 Ответ

0 голосов
/ 01 сентября 2011

У меня была похожая проблема с IE 9.

Я использовал следующее для имитации сочетаний клавиш в диалоге

 using (browser)
                    {
                        SendKeys.SendWait("+(%S)");
                    }

Отправить ключи = http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

Помогает ли это?

...