2016-07-28 30 views
0

Als Teil eines automatisierten Tests kann ich nicht auf das SharePoint-Menüband klicken, um das Steuerelement "Alert Me" auszuwählen. Ich erhalte die folgende Fehlermeldung:CODEDUI C# kann nicht aufSharePoint Ribbon Control klicken

Ergebnis Nachricht: Prüfnorm CodedUITestProject2.CodedUITest1.SetAlert Ausnahme ausgelöst hat: Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException: Kann nicht ausführen ‚Click‘ auf der verdeckten Kontrolle. Weitere Details: TechnologyName: 'Web' Control: 'Hyperlink' TagName: 'A' Id: 'Ribbon.Library.Share.AlertMe.Menu.Scope.AlertLibrary-Menu16' Name: '' Ziel: ' ' Innertext: 'Set-Alarm auf dieser Bibliothek' ---> System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0xF004F002

finden sie meinen Code unten: 1. und 2. Arbeit und Fehler heraus an 3. Ich habe versucht, verschiedene Steuerungseinstellungen hinzuzufügen und zu entfernen.

// 1. Wählen Sie die Registerkarte Bibliothek in der Multifunktionsleiste

 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); 

Antwort

0

Dies ist eine häufige Sache mit SharePoint-Automatisierung passiert. Zwei Gründe könnten verhindern, dass Sie auf den Link "Alert Me" klicken. 1. Alert mich wird unter einem Elternteil gehalten und Sie versuchen, direkt zu klicken. 2. Zwei identische Elemente vorhanden, wo das eine versteckt ist und das andere sichtbar ist.

Ich werde Code für den zweiten Grund geben, wenn es nicht funktioniert, dann können Sie versuchen, klicken Sie durch Folgen der übergeordneten Kindhierarchie, die sehr einfach von Ihnen selbst durchzuführen ist.

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; 
} 
} 

versuchen Sie oben genannten Code. Ansonsten folge der Eltern-Kind-Beziehung. Es wird auch nicht empfohlen, UITestControl ständig zu verwenden, um die Elemente zu identifizieren. Bitte versuchen Sie, bestimmte Klassennamen zu verwenden, zB wenn Sie versuchen, auf Hyperlink anstelle von UITestControl zu klicken, verwenden Sie die HtmlHyperlink Klasse, um alle möglichen Attribute zu identifizieren Elemente. Dies ist eine Best Practice, der ich folge.