2016-03-24 8 views
0

Извините за нарушение, но кажется, что мне нужна ваша помощь. Я действительно новичок в C#, белый каркас.C# белый, не может найти элемент в окне

В этом проблема ... Я пытаюсь автоматизировать приложение WinForm, очень простое.

Руководство шаги для автоматизации:

  1. Открыть окно

  2. Скачать файл в этом окне

  3. Найти заголовок в нижней части этого окна

Проблема: может нажимать любые кнопки, открывать диалоги и т. д. Но после нескольких шагов я не могу найти ярлык (подпись).

Я пробовал этот код на 2 ПК. Для одного ПК он работает, для других - не работает. Я видел только один раз, когда этот ярлык был найден.

Обычно я вижу, что Studio просто зависает и пытается найти элементы.

Я думаю, что Studio работает очень быстро, и элементы недоступны для чтения. Не могли бы вы мне помочь? enter image description here

 //Add file name for opening 
     TextBox listLoadFile = mainWindow.Get<TextBox>(SearchCriteria.ByText("File name:")); 
     listLoadFile.Text = "Omneon_72.lst"; 
     application.WaitWhileBusy(); 

     // open file 
     Keyboard.Instance.PressSpecialKey(KeyboardInput.SpecialKeys.RETURN); 
     application.WaitWhileBusy(); 

     mainWindow.Focus(); 
     mainWindow.ReloadIfCached(); 

     //Can't find this element 
     Label caption3 = mainWindow.Get<Label>(SearchCriteria.ByAutomationId("lblStatus")); 

     //Can't see elements 
     IUIItem[] children1 = mainWindow.GetMultiple(SearchCriteria.All); 

ответ

0

Что делать, если вместо перезагрузки mainWindow вы бы просто прикрепить процесс снова.

process = Process.GetProcessesByName("myProcess")[0]; 
    application = Application.Attach(process.Id); 
    mainWindow = application.GetWindow("myWindowTitle"); 

    Label caption3 = mainWindow.Get<Label>(SearchCriteria.ByAutomationId("lblStatus")); 
    IUIItem[] children1 = mainWindow.GetMultiple(SearchCriteria.All);