2016-07-28 4 views
0

자동화 된 테스트의 일부로 SharePoint 리본을 클릭하여 "경고"컨트롤을 선택할 수 없습니다. 나는 다음과 같은 오류가 점점 오전 :CODEDUI C# clickSharePoint 리본 컨트롤을 사용할 수 없습니다.

결과 메시지 : Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException : 시험 방법 CodedUITestProject2.CodedUITest1.SetAlert은 예외를 던졌다 숨겨진 컨트롤을 수행 할 '클릭'할 수 없습니다. 추가 정보 : TechnologyName : '웹' ControlType : '하이퍼 링크' 태그 이름 : 'A' ID : 'Ribbon.Library.Share.AlertMe.Menu.Scope.AlertLibrary-Menu16' 이름 : '' 대상 ' ' 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 자동화에서 자주 발생합니다. "Alert Me"링크를 클릭하는 것을 다시 막을 수있는 두 가지 이유가있을 수 있습니다. 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 클래스를 사용하여 가능한 모든 특성을 사용하여 클래스를 식별 할 수 있습니다. 집단. 이것은 제가 따라하는 모범 사례입니다.