Невозможно автоматически закрыть окно сообщения в vb.net

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

Код выглядит следующим образом:

    <TestMethod()>
Public Sub TestMethod1()
    With _desktop.Window("Calculator")
        .SetActive()
        generateMsg()
        .PushButton("Clear").Select()
        .PushButton("3").Select()
        .PushButton("5").Select()
    End With

End Sub

Public Sub generateMsg()
    Thread.Sleep(2000)
    With _desktop.Window(MsgBox("Test", MsgBoxStyle.Critical, "Test"))
        For Each p As Process In Process.GetProcesses
            If p.MainWindowTitle.Contains("Test") Then
                p.Kill()
            End If
        Next

        'With .Dialog("Test")
        '    '.PushButton("OK").Select()

        'End With
        ' .Close()
    End With
End Sub

Любая помощь приветствуется. Спасибо.


person Pallavi Prasad    schedule 17.02.2016    source источник
comment
Вы показываете MsgBox как часть своего тестового сценария. Чего вы пытаетесь добиться этим?   -  person tehlexx    schedule 17.02.2016
comment
просто пытаюсь программно обрабатывать msgbox   -  person Pallavi Prasad    schedule 18.02.2016
comment
Если вы удалите код из скрипта, который создает MsgBox, вам не нужно его обрабатывать. Обработка этого сценария будет практически невозможной, поскольку вызов MsgBox, вероятно, является синхронным, что блокирует выполнение вашего сценария, пока он открыт. Вы можете попробовать создать окно сообщения из другого потока, но все же я думаю, что создавать пользовательский интерфейс в ваших тестовых сценариях — плохая идея.   -  person tehlexx    schedule 18.02.2016
comment
Я согласен с @tehlexx: тестовая программа должна тестировать другую программу, а не себя.   -  person Thomas Weller    schedule 01.03.2016


Ответы (1)


Обновленный ответ

Вы можете добавить таймер в код, который использует SendKeys.SendWait, например, немного адаптировав его для вашей тестовой среды, так как я не уверен в Silk4Net.

Dim WithEvents timer1 As New System.Timers.Timer
timer1.Interval = 5000
timer1.Enabled = True
MsgBox("Hello. I will go bye-bye in 5 seconds.")
timer1.Enabled = False

И как отдельный саб

Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles timer1.Elapsed
    SendKeys.SendWait("{ENTER}")
End Sub
person David Wilson    schedule 17.02.2016
comment
Я не использую форму. Можем ли мы использовать ту же концепцию для простого MsgBox? - person Pallavi Prasad; 17.02.2016
comment
Кажется так. Я также попробовал это с Msgbox, и он отлично работает. - person David Wilson; 17.02.2016
comment
Обновление ответа для таймера без форм - надеюсь, это сработает лучше для вас - person David Wilson; 18.02.2016
comment
Спасибо. Попробую. - person Pallavi Prasad; 18.02.2016