最近,我开始尝试对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非常轻,很轻,我无法理解其中的差异。
引出以下问题:
答案 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.Find
和UITestControl.FindMatchingControls
在特定控件上应用搜索或过滤后,如果要触发搜索该控件,则使用其书写类型为Void的查找。
而FindMatchingControls也触发搜索返回类型为UITestControlCollection
的集合,其中包含与给定搜索或过滤器匹配的所有控件。
但是还有一个控件返回bool TryFind