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



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

我目前遇到的一个问题是"单击"菜单栏中的菜单。

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

https://i.stack.imgur.com/swlxU.png

我可以使用以下命令找到主菜单栏:

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

其中返回:

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

但是试图使用.按文本或 .ByIndex(或其他任何东西(抛出一个异常,它找不到"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();

但这会使我的鼠标移动到屏幕中心周围。

我看到"菜单栏"被包装在另一个控件中,然后您可以使用它来查找您假定是所述菜单栏的子元素的内容。

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

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();

注意 - 我以前遇到过这种类型的控件的点击问题,希望这对你来说不会发生......"线程点击"对象以使其工作。

最新更新