我似乎在 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") 方法中有一个错误的主要内容,如果未能解决你的问题,请参考以下文章

C# Teststack.White:有时无法找到按钮

使用 TestStack.White 查找 VB6 控件

如何使用 TestStack.White.UIItems 测试 ItemsControl

如何使用 Teststack.white 自动化框架控制迷你窗口?

TestStack White - 从命令行运行测试

如何将 UI 测试与 DotNetBar 组件一起使用?