通过White访问DataGridView单元格

7
所以我正在使用White进行C#自动化/UI测试,并且遇到了一些问题。我在应用程序中有一个DataGridView,并根据应用程序状态设置背景单元格颜色。我想在测试期间使用White检查这些颜色,但是做起来很困难。
我正在尝试使以下内容起作用。我可以获取表格视图,但只能获取作为表。然后,我在稍后遇到了问题,因为最终会得到普通的TableCells而不是DataGridViewCells。
var Table = MainWindow.Window.Get<Table>("DataGridViewName");
var Row = Table.Rows[0];
var Cell = Row.Cells[0];
//invalid
//var Color = Cell.Style.BackColor;

有人遇到过这种情况或有任何建议吗?

为什么你不能像这样做:MainWindow.Window.Get<DataGridView>? - Marty
嗯,也许我使用的是旧版本的White,但我找不到一个名为DataGridView的组件。 这段代码能编译通过吗? - sshannin
2
如果这个应用是你的,你可以增强它的UI自动化支持/能力,以更好地与White集成(我相信它使用UI自动化来完成大部分工作)。 - Simon Mourier
是我的。当然会尝试按照您的建议去做,但是我在让它工作时遇到了麻烦。白色文档太过简略 : / - sshannin
您可以通过在程序中增加额外的UI自动化功能(请参见此处获取更多信息:http://www.devx.com/dotnet/Article/21755/0/page/3),而无需了解白色背景的任何内容,就能提高在SO社区中的知名度。另外,请不要忘记在SO消息中添加用户的SO名称,否则我们将无法判断该消息是否由您发送。 - Simon Mourier
1个回答

1

您确定backcolor是通过UI自动化公开的吗? 从我所做的低级UI自动化编码来看,我从未见过这样的属性。我刚刚打开了Inspect(类似于UISpy),并将其指向C# WinForms应用程序中的DataGridView,但没有公开此类属性。

因此,由于它似乎没有被公开,除了捕获图像并将其与某个阈值的基线进行比较(听起来很混乱)之外,没有其他方法可以通过自动化来解决它。

除非您可以以某种其他自动化属性的方式嵌入信息(这需要更改测试的应用程序),否则我看不到任何解决方法。 :(


是的,这也是我得出的结论。最终我从元素定义的区域中获取了可见图像,并查看了其实际像素(基本上就像你建议的那样)。 - sshannin
你可以随时编写一个AutomationPeer来读取后台对等体。 - Apoorv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接