find和findmatchingcontrols有什么区别

时间:2015-02-05 08:02:07

标签: coded-ui-tests

最近,我开始尝试对Coded-UI测试进行手动编码,并遇到Find方法的问题。

我正在使用的代码:

    Dim usernameControl As New UITestControl
    usernameControl.TechnologyName = "MSAA"
    usernameControl.SearchProperties.Add(WinWindow.PropertyNames.ControlName, "user")
    usernameControl.Find()
    Dim usernameEdit As New WinEdit(usernameControl)
    usernameEdit.text = "myusername"

    Dim passwordControl As New UITestControl()
    passwordControl.TechnologyName = "MSAA"
    passwordControl.SearchProperties.Add(WinWindow.PropertyNames.ControlName, "password")
    passwordControl.Find()
    Dim passwordEdit As New WinEdit(passwordControl)
    passwordEdit.text = "mypassword"

由于某种原因,passwordEdit.text函数设置usernameEdit字段的文本。在我用.Find()替换.FindMatchingControls()后,它开始工作了。

    usernameControl.Find() VS usernameControl.FindMatchingControls()

documentation of these functions非常轻,很轻,我无法理解其中的差异。

引出以下问题:

  • 这两个功能有什么区别?
  • 你能举例说明何时使用哪个?
  • 是否有更好的Coded-UI方法文档?

2 个答案:

答案 0 :(得分:1)

由于我无法看到您尝试测试的代码,这将是一个猜测:

您正在寻找名为password的控件,因为您没有指定它是WinEdit,它可能只是找到第一个名为password的控件。如果我的猜测是正确的,可以是密码字段上方的文本。

两个选项,将密码控件重命名为PasswordInput并专门搜索。

第二个选项是搜索winEdit控件而不是UiTestControl:

Dim passwordEdit As New WinEdit()
passwordEdit.TechnologyName = "MSAA"
passwordEdit.SearchProperties.Add(WinWindow.PropertyNames.ControlName, "password")
passwordEdit.Find()
passwordEdit.text = "mypassword"

答案 1 :(得分:0)

回答UITestControl.FindUITestControl.FindMatchingControls

之间的主要问题区别

在特定控件上应用搜索或过滤后,如果要触发搜索该控件,则使用其书写类型为Void的查找。 而FindMatchingControls也触发搜索返回类型为UITestControlCollection的集合,其中包含与给定搜索或过滤器匹配的所有控件。

但是还有一个控件返回bool TryFind