2016-07-28 2 views
0

自動テストの一環として、SharePointリボンをクリックして「警告する」コントロールを選択することはできません。私は、次のエラーを取得しています:CODEDUI c#clickSharePointリボンコントロールできない

結果メッセージ: 試験方法CodedUITestProject2.CodedUITest1.SetAlert例外をスロー: Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException:実行できません隠されたコントロール上で「クリック」。追加の詳細: TechnologyName: 'ウェブ' ControlType: 'ハイパーリンク' のTagName: '' イド: 'Ribbon.Library.Share.AlertMe.Menu.Scope.AlertLibrary-Menu16' 名: '' ターゲット: " 「 InnerTextプロパティ: 『このライブラリには、アラートを設定して』 ---> System.Runtime.InteropServices.COMException:HRESULTからの例外:で実施1.と2.の作業とそれエラー:0xF004F002

以下の私のコードを見つけてください。 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の自動化でよく起こることです。 「アラート・ミー」リンクをクリックしないようにする2つの理由が考えられます。 1.私に警告するのは親の下にあり、あなたは直接クリックしようとしています。 2. 2つの同一の要素が表示され、一方が隠され、他方が表示されます。

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クラスを使用すると、可能なすべての属性を使用して、要素。これは私が従うベストプラクティスです。

関連する問題