CodedUi:鼠标点击坐标

本文关键字:坐标 鼠标 CodedUi | 更新日期: 2023-09-27 18:02:16

如何在所有屏幕类型中单击按钮的特定部分?我有一个带有下拉值的按钮,我需要点击下拉图像,我尝试了下面的代码:

 Mouse.click(someBtn,new Point(250,45));

这在我的屏幕上工作,这点击桌面的其他地方,因为轴的变化。建议一些变通方法或解决方案。

CodedUi:鼠标点击坐标

试着给出一个相对于被点击控件的位置,而不是一个绝对点,使用这个属性:

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