2016-07-28 17 views
0

Как часть автоматического теста, я не могу нажать на ленту SharePoint, чтобы выбрать элемент «Alert Me». Я получаю следующее сообщение об ошибке:CODEDUI C# Не удается щелкнуть управление лентойSharePoint

Результат Сообщение: метод Test CodedUITestProject2.CodedUITest1.SetAlert бросил исключение: Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException: Невозможно выполнить «Клик» на скрытом контроле. Дополнительные детали: TechnologyName: 'Web' ControlType: 'HYPERLINK' TagName: 'A' Id: 'Ribbon.Library.Share.AlertMe.Menu.Scope.AlertLibrary-Menu16' Названия: '' Target: ' ' InnerText: „Установить оповещение на эту библиотеку“ ---> System.Runtime.InteropServices.COMException: Исключение из HRESULT: 0xF004F002

Пожалуйста, найти свой код ниже: 1. и 2. работа и это ошибки при 3. Я попытался добавить и вычесть различные параметры управления.

// 1. Выберите вкладку «Библиотека» на ленте

 UITestControl CLR = new UITestControl(browser); 
     CLR.TechnologyName = "Web"; 
     CLR.SearchProperties.Add("InnerText", "LibraryLibrary Tools group. Tab 2 of 2."); 
     CLR.WaitForControlReady(); 
     Mouse.Click(new Point(CLR.BoundingRectangle.X + CLR.BoundingRectangle.Width/2, CLR.BoundingRectangle.Y + CLR.BoundingRectangle.Height/2)); 
     CLR.WaitForControlReady(); 
     //Mouse.Click(CLR); 
     Playback.Wait(3000); 

     //2. set focus on the a pane control on the ribbon  

     UITestControl FRL = new UITestControl(browser); 
     FRL.TechnologyName = "Web"; 
     FRL.SearchProperties.Add("TagName", "SPAN"); 
     FRL.SearchProperties.Add("ControlType", "Pane"); 
     FRL.SearchProperties.Add("Class", "ms-cui-groupTitle"); 
     FRL.SearchProperties.Add("InnerText", "Share & Track"); 
     FRL.WaitForControlExist(); 
     FRL.SetFocus(); 
     Mouse.Click(new Point(FRL.BoundingRectangle.X + FRL.BoundingRectangle.Width/2, FRL.BoundingRectangle.Y + FRL.BoundingRectangle.Height/2)); 
     Playback.Wait(3000); 


     //3. Click on "Alert Me" ID 
     UITestControl AM = new UITestControl(browser); 
     AM.TechnologyName = "Web";    
     //AM.SearchProperties.Add("Inner Text", "Alert Me"); 
     AM.SearchProperties.Add("Id", "Ribbon.Library.Share.AlertMe-Large"); 
     AM.WaitForControlReady(); 
     Mouse.Click(new Point(AM.BoundingRectangle.X + AM.BoundingRectangle.Width/2, AM.BoundingRectangle.Y + AM.BoundingRectangle.Height/2)); 
     Playback.Wait(2000); 

ответ

0

Это обычное дело с автоматизацией SharePoint. Две причины могут помочь вам вернуть вас, щелкнув ссылку «Оповестить меня». 1. Оповещение меня хранится под родителем, и вы пытаетесь щелкнуть напрямую. 2. Два одинаковых элемента, которые скрыты, а другой видны.

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

UITestControl AM = new UITestControl(browser); 
//AM.TechnologyName = "Web";    
//AM.SearchProperties.Add("Inner Text", "Alert Me"); 
AM.SearchProperties.Add("Id", "Ribbon.Library.Share.AlertMe-Large"); 
AM.WaitForControlReady(); 
UITestControlCollection uic=AM.FindMatchingControls(); 
foreach(UITestControl ui in uic) 
{ 
if(ui.BoundingRectangle.Width !=-1) 
{ 
Mouse.Click(ui); 
break; 
} 
} 

попробуйте код. Иначе следуйте родительским отношениям с дочерью. Также не рекомендуется постоянно использовать UITestControl для идентификации элементов, пожалуйста, попробуйте использовать определенные имена классов, например, если вы пытаетесь нажать на гиперссылку вместо UITestControl, используйте класс HtmlHyperlink, чтобы вы могли использовать все возможные атрибуты для идентификации элементы. Это лучшая практика, которой я следую.