我似乎在 TestStack White 的 ListView.Row("Name", "Value") 方法中有一个错误
Posted
技术标签:
【中文标题】我似乎在 TestStack White 的 ListView.Row("Name", "Value") 方法中有一个错误【英文标题】:I seem to have an off-by-one error in the ListView.Row("Name", "Value") method of TestStack White 【发布时间】:2017-01-13 11:27:18 【问题描述】:我要做的就是右键单击 Name="2" 所在的行。所以我使用:
ListView list = output.Get<ListView>(SearchCriteria.ByAutomationId("selectorUser1"));
if (list.Items.Contains(keyName))
ListViewRow lvr = list.Row("Name", keyName);
lvr.Cells[0].RightClick();
如果 keyName="2",它会选择 Name="xxx" 所在的行(即一个单独的问题)。这让我非常想哭。 TestStack White 依赖项是从 nuget 引入的,我认为它们是 4.x 版(?)或者至少它们应该是最新的,我使用的是 .Net 4.5.1,但如果可以下降到 4.0需要。有趣的是,nuget 包控制台警告:
从模块“TestStack.White”中导入的一些命令的名称 包括未经批准的动词,这些动词可能会使它们不易被发现。到 找到带有未批准动词的命令,运行 Import-Module 命令 再次使用 Verbose 参数。要获得批准的动词列表,请键入 获取动词。
有没有人在使用白色时看到过类似的情况? 我在这里很茫然......
【问题讨论】:
【参考方案1】:ListView list = output.Get<ListView>(SearchCriteria.ByAutomationId("selectorUser1"));
list.Rows.ForEach(p =>
if(p.Name == "Name")
p.Cells.ForEach(c =>
if(c.Text.ToString() == "2")
c.RightClick();
);
);
【讨论】:
赞赏-但事实证明这会遇到同样的问题。我想我已经解决了根本问题,并将回答我自己的问题。再次感谢。 使用 UIAComWrapper : github.com/TestStack/White/tree/UIAComWrapper【参考方案2】:答案似乎是 - 这是 Windows 10 上的一个错误(仅?)。完全相同的代码在 Windows 7 上按预期工作。看图。
【讨论】:
以上是关于我似乎在 TestStack White 的 ListView.Row("Name", "Value") 方法中有一个错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 TestStack.White.UIItems 测试 ItemsControl