CodedUi:鼠标点击坐标
本文关键字:坐标 鼠标 CodedUi | 更新日期: 2023-09-27 18:02:16
如何在所有屏幕类型中单击按钮的特定部分?我有一个带有下拉值的按钮,我需要点击下拉图像,我尝试了下面的代码:
Mouse.click(someBtn,new Point(250,45));
这在我的屏幕上工作,这点击桌面的其他地方,因为轴的变化。建议一些变通方法或解决方案。
试着给出一个相对于被点击控件的位置,而不是一个绝对点,使用这个属性:
uitestcontrol.BoundingRectangle
像这样:
var btnPosition= someBtn.BoundingRectangle
,然后根据控件的当前位置选择要单击的位置。
例如:Point relativePoint = new Point(btnPosition.X + 40, btnPosition.Y - 40);
Mouse.click(someBtn,relativePoint );
我遇到了这个问题,我找到了与Niels在上面评论中所做的相同的解决方案。然而,如果你做同样的事情,你实际上是在忽略UI元素,你是在点击屏幕上的一个已知点。你的窗户不能动,这个才能工作。所以Niels和我使用的解决方案可以在一行代码中完成(不需要边框矩形或其他btn),就像这样…
鼠标。点击(new Point(575, 920));
风险在于你的窗口移动,但由于某些原因,编码UI有一个不可点击的点,我看不到任何其他方法。这一行在我的UIMap.cs中的一个方法中(通过右键单击UIMap中的方法将该方法移动到那里)。测试并选择"Move Code to UIMap.cs")。所以我同意Niels的观点,但是如果你这样做了,那么答案中剩下的代码就不会被使用了!
如果你不知道移动代码到UIMap.cs然后阅读它,基本上,如果你改变系统生成的代码没有移动它,那么你的代码将被覆盖,当你构建下一个,让你想知道你的代码去哪里,为什么你的测试停止工作。别问我怎么知道的!
感谢您在解决我所面临的类似问题上的所有领导&三振出局两天……我的搜索是如何通过CodedUI自动化在Windows应用程序中单击具有网格隐藏属性的单元格
我的Sol如下:…credit @ MSDN link dude
public void InstantiateControls()
{
#region UserSearch
frSearchUsers = new ControlWithContainer<WinGroup>(this.SourceControl, By.ControlName("frSearchUsers"));
txtFindUser = new ControlWithContainer<WinEdit>(this.SourceControl, By.ControlName("txtFindUser"));
vgrdUsers = new ControlWithContainer<WinWindow>(frSearchUsers.Control.SourceControl, By.ControlName("vgrdUsers"));
vgrdUserscUSTOM = new ControlWithContainer<WinCustom>(vgrdUsers.Control.SourceControl, By.ControlName("vgrdUsers"));
#endregion
}
public void clickCell()
{
var cellGrid = vgrdUserscUSTOM.Control.SourceControl;
UITestControl cellGridCell = new UITestControl(cellGrid);
cellGridCell.SearchProperties["ControlType"] = "Cell";
cellGridCell.SearchProperties["InnerText"] = "Dawson,Jade";
if (cellGridCell.TryFind())
{
cellGridCell.SetFocus();
cellGridCell.Find();
UITestControlCollection uic = cellGridCell.FindMatchingControls();
foreach (UITestControl ui in uic)
{
if (ui.BoundingRectangle.Width > 0)
{
Mouse.Click(ui);
break;
}
}
}