【问题标题】:Unable to click a button even though I am able to retrieve it using the Name即使我能够使用名称检索按钮,也无法单击按钮
【发布时间】:2014-01-08 00:59:46
【问题描述】:
  var navigator = BonusAppControllers.EbsControl.CurrentApp.GetWindow("XWindow").Get(SearchCriteria.ByAutomationId("AnimatedExplorerNavigator"));
  AutomationElement dashboardElement = navigator.AutomationElement.FindFirst(TreeScope.Subtree,SearchConditionFactory.CreateForName("NavigateLink_1").AutomationCondition);
  var dashBoardBtn = new Button(dashboardElement, navigator.ActionListener);
  dashBoardBtn.Click();

我有这个名称为 NavigateLink_1 的按钮的代码。现在,当我运行它并调试它时,我发现我能够在 dashBoardBtn 变量中获得正确的按钮实例,但 Click() 函数不起作用。即使我尝试像使用 Get(SearchCriteria.ByText("NavigateLink_1")) 那样使用按钮名称来完成所有这些操作,我也会遇到同样的问题。我用同一组按钮的其他按钮部分尝试了同样的事情,但在这种情况下它工作正常。

谁能建议我可能是什么问题。我正在使用 White Framework 和 UI Spy 作为我的应用程序的 UI 检查器

【问题讨论】:

  • 任何人..我急需答案..还有其他更好的方法吗?
  • 当你说它不起作用时,它是不是点击或抛出错误或点击错误的按钮?
  • 我也需要这方面的帮助...stackoverflow.com/questions/20699811/…
  • 我使用了 RaisedClickEvent() 并且它现在可以工作了..但是我现在收到了上面链接中提到的 WPF 元素离屏错误
  • No..Again Unable to click the button..RaisedClickEvent() 解决了一个按钮的问题,但我在使用其他按钮时遇到了同样的问题..有人可以解释一下为什么这件事一直在发生?

标签: unit-testing ui-automation white-framework


【解决方案1】:

我没有使用 White,但我使用了原生 UIA 库。您偶尔会遇到的问题是您将拥有一个可点击的对象,但根据内部处理点击的方式,您可能不一定能够使用 InvokePattern 来执行点击。这里可能就是这种情况。

作为替代方案,您可以使用一些代码将鼠标光标移动到 AutomationElement 上并使用 P/Invoke 发出单击。这有点小技巧,但当您遇到此问题时,它通常是最简单的选择。

private const UInt32 MOUSEEVENTF_LEFTDOWN = 0x0002;
private const UInt32 MOUSEEVENTF_LEFTUP = 0x0004;

[DllImport("user32.dll")]
private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo);

...
...

AutomationElement buttonToClick;

...
...

Cursor.Position = buttonToClick.GetClickablePoint();
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, new IntPtr());
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, new IntPtr());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-12
    • 1970-01-01
    相关资源
    最近更新 更多