CODEDUI c# 无法点击 SharePoint 功能区控件
CODEDUI c# Cannot clickSharePoint Ribbon Control
作为自动化测试的一部分,我无法单击 SharePoint 功能区以 select "Alert Me" 控件。我收到以下错误:
结果信息:
测试方法 CodedUITestProject2.CodedUITest1.SetAlert 抛出异常:
Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException: 无法对隐藏控件执行'Click'。额外细节:
技术名称:'Web'
控件类型:'Hyperlink'
标记名称:'A'
编号:'Ribbon.Library.Share.AlertMe.Menu.Scope.AlertLibrary-Menu16'
姓名: ''
目标: ''
内文:'Set alert on this library'
---> System.Runtime.InteropServices.COMException:HRESULT 异常:0xF004F002
请在下面找到我的代码:1. 和 2. 工作,但在 3 处出错。我尝试添加和减去不同的控制设置。
//1。 Select 功能区上的库选项卡
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);
这是 SharePoint 自动化经常发生的事情。
有两个原因可能会阻止您点击 "Alert Me" link。
1. Alert me 保存在 parent 下,你正试图直接点击。
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 来识别元素,请尝试使用特定的 class 名称,例如,如果您尝试单击 hyperlink 而不是 UITestControl,请使用 HtmlHyperlink class 以便您可以使用所有可能的属性来标识元素。这是我遵循的最佳做法。
作为自动化测试的一部分,我无法单击 SharePoint 功能区以 select "Alert Me" 控件。我收到以下错误:
结果信息: 测试方法 CodedUITestProject2.CodedUITest1.SetAlert 抛出异常: Microsoft.VisualStudio.TestTools.UITest.Extension.FailedToPerformActionOnHiddenControlException: 无法对隐藏控件执行'Click'。额外细节: 技术名称:'Web' 控件类型:'Hyperlink' 标记名称:'A' 编号:'Ribbon.Library.Share.AlertMe.Menu.Scope.AlertLibrary-Menu16' 姓名: '' 目标: '' 内文:'Set alert on this library' ---> System.Runtime.InteropServices.COMException:HRESULT 异常:0xF004F002
请在下面找到我的代码:1. 和 2. 工作,但在 3 处出错。我尝试添加和减去不同的控制设置。
//1。 Select 功能区上的库选项卡
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);
这是 SharePoint 自动化经常发生的事情。 有两个原因可能会阻止您点击 "Alert Me" link。 1. Alert me 保存在 parent 下,你正试图直接点击。 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 来识别元素,请尝试使用特定的 class 名称,例如,如果您尝试单击 hyperlink 而不是 UITestControl,请使用 HtmlHyperlink class 以便您可以使用所有可能的属性来标识元素。这是我遵循的最佳做法。