2014-11-27 3 views
0

У меня есть требование захватить снимок экрана открытого диалога с выделенным элементом html (статический идентификатор которого указан). В настоящее время я Реализован код следующим образом:Выделение определенного элемента управления при съемке снимка экрана диалогового окна на веб-странице в C#

public void Snapshot() 
{ 
    Image currentImage = null; 
    currentImage = GetOpenedDialogFrame().CaptureImage(); 
} 

public UITestControl GetOpenedDialogFrame() 
{ 
    var dialogsFrames = new HtmlDiv(this.BrowserMainWindow.UiMobiControlDocument); 
    dialogsFrames.SearchProperties.Add(new PropertyExpression(HtmlControl.PropertyNames.Class, "mcw-dialog", PropertyExpressionOperator.Contains)); 
    var dialogs = dialogsFrames.FindMatchingControls(); 
    if (dialogs.Count == 0) 
    { 
     return null; 
    } 

    return dialogs[dialogs.Count - 1]; 
} 

Теперь я должен написать код, чтобы выделить конкретный контроль HTML, беря скриншот. Метод DrawHighlight()Microsoft.VisualStudio.TestTools.UITesting.dll не принимает никаких параметров, поэтому как я могу выделить конкретный элемент управления html на скриншоте.

ответ

0

DrawHighlight() - это метод управления пользовательским интерфейсом. Он может быть использован в этом стиле:

public void Snapshot() 
{ 
    Image currentImage = null; 
    var control = GetOpenedDialogFrame(); 
    // TODO: protect the code below against control==null. 
    control.DrawHighlight(); 
    currentImage = control.CaptureImage(); 
} 

Пока что ответы на ваш вопрос о DrawHighlight, я не уверен, что это будет достичь того, чего вы хотите. Пожалуйста, см. this question the Microsoft forums, где они пытаются сделать подобный захват экрана.

0

Почему не просто пользователь настройки воспроизведения:

Playback.PlaybackSettings.LoggerOverrideState = HtmlLoggerState.AllActionSnapshot; 

Это создаст лог-файл HTML со всеми скриншотами, что ваш codedui тест пошел забрасывали.

0

После поиска соответствующих элементов управления вы можете попытаться выделить каждый из них. что-то вроде:

 foreach(var control in controls)  
     { 
     control.drawhighlight(); 
     } 

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

поэтому после теста вы будете в конечном итоге с чем-то вроде:

 var dialogs = dialogsFrames.FindMatchingControls(); 
    dialogs[desiredLocation].drawhighlight(); 

надеюсь, что это помогает.

Смежные вопросы