TestStack.White无法单击菜单栏项?

时间:2018-10-23 06:49:00

标签: c# menubar teststack

我目前正在制作一个程序,该程序可以使我需要在程序上执行的任务自动化。

我当前遇到的一个问题是在菜单栏中的菜单上“单击”。

我使用Spy ++找到了菜单栏的类名,它称为TActionMainMenuBar,但是它下面的所有内容都被本地化为ammbSSC。

https://i.imgur.com/R7lLfVg.png

我可以使用以下方法找到主菜单栏:

var x = window.Get(SearchCriteria.ByClassName("TActionMainMenuBar"));

Console.WriteLine(x.ToString());

哪个返回:

Panel. AutomationId:1311676, Name:ammbSSC, ControlType:pane, FrameworkId:Win32
TestStack.White.Application

但是尝试使用.ByText或.ByIndex(或其他任何东西)查找“ ACTIONS”会引发一个异常,即找不到“ ACTIONS”。

我什至可以找到这样的文字吗?还是应该使用鼠标输入-自动执行鼠标移动?

编辑:

我也尝试过这样做:

window.GetMultiple(SearchCriteria.ByControlType(ControlType.Pane).AndByClassName("TActionMainMenuBar"))[1].Click();

但这会引发“索引超出数组范围”。

我也尝试过这样做:

window.GetMultiple(SearchCriteria.ByControlType(ControlType.Pane))[1].Click();

并且:

window.GetMultiple(SearchCriteria.ByControlType(ControlType.Pane).AndByClassName("TActionMainMenuBar").AndByText("ACTIONS"));

window.Click();

但这会将鼠标移动到屏幕中心附近。

1 个答案:

答案 0 :(得分:0)

我已经看到“菜单栏”被包裹在另一个控件中,然后您可以使用它来找到您认为是所述菜单栏的子元素。

在我的一种情况下,菜单栏位于一个窗口(弹出窗口)中,然后我在弹出窗口中找到如下所示的“动作”。

Window PopUp => Window.ModalWindows().Last(); //Gets the latest popup
var all = PopUp.GetMultiple(SearchCriteria.ByControlType(ControlType.Text)); //Get all the options, most cases, the menu items are in a textbox, use whatever you see in your spy tool
var menu = all.FirstOrDefault(m => m.Name.Equals("actionValue") && m.Visible); 
menu?.Click();

抬起头-以前我曾遇到过这种类型的控件的点击问题,希望这对您来说不会发生...在对象上“单击线程”以使其正常工作。