在我的 UI 测试中,我有这个XCUIElement:
XCUIApplication().staticTexts["SUBMIT ORDER"]
当我打印 debugDescription 时:
po print(XCUIApplication().staticTexts["SUBMIT ORDER"].debugDescription)
有两个元素匹配:
Find: Elements matching predicate '"SUBMIT ORDER" IN identifiers'
Output: {
StaticText, {{0.0, 623.0}, {375.0, 44.0}}, label: 'SUBMIT ORDER'
StaticText, {{0.0, 623.0}, {375.0, 44.0}}, label: 'SUBMIT ORDER'
}
Run Code Online (Sandbox Code Playgroud)
.tap()我的问题是:我怎样才能只在最后一个元素上制作 a ?
我正在使用visual studio 2010编码的测试.
我希望能够比目前能够表现更多.
例如,如果特定字段"AreEqual"或"包含"等我可以断言,但我想做更多.
例如,我想检查该字段是否包含其中的数值.我编辑了UIMap.Designer.cs并且能够实现我想要的.
唯一的问题是在添加新测试时会覆盖此文件.
所以我的问题是我怎样才能"弄清楚"用户界面中的字段/咒语并在其上实现我自己的断言?
谢谢
当我使用Coded UI测试记录"Login Scenario"的测试方法时,它会生成这样的代码
生成的代码
public void LoginMethod()
{
#region Variable Declarations
WinEdit uIItemEdit = this.UIDiagnosoftVIRTUEWindow.UIItemWindow.UIItemEdit;
WinEdit uIItemEdit1 = this.UIDiagnosoftVIRTUEWindow.UIItemWindow1.UIItemEdit;
WinComboBox uIItemComboBox = this.UIDiagnosoftVIRTUEWindow.UIItemWindow2.UIItemComboBox;
WinButton uIConnectButton = this.UIDiagnosoftVIRTUEWindow.UIConnectWindow.UIConnectButton;
#endregion
// Type 'username' in 'Unknown Name' text box
uIItemEdit.Text = this.LoginMethodParams.UIItemEditText;
// Type '********' in 'Unknown Name' text box
Keyboard.SendKeys(uIItemEdit1, this.LoginMethodParams.UIItemEditSendKeys1, true);
// Select 'facility' in 'Unknown Name' combo box
uIItemComboBox.SelectedItem = this.LoginMethodParams.UIItemComboBoxSelectedItem;
// Click 'Connect' button
Mouse.Click(uIConnectButton, new Point(64, 14));
}
Run Code Online (Sandbox Code Playgroud)
我更新此代码以允许数据驱动源,CSV文件,其中包含用户名,密码,....这里是更新的代码
更新的代码
public void LoginMethod(string username,string password,string facility)
{
#region …Run Code Online (Sandbox Code Playgroud) Coded UI的唯一目的是执行自动功能测试,不需要人工交互.我们可以在TFS中管理一个TestCase列表,我们可以在使用MTM(Microsoft Test Manager)运行测试用例时记录用户操作.在我们发现构建更改后,这些自动记录的操作也可以重复多次.
我已经提到了一些文章,建议生成一个Coded UI TestMethod,从Testcase的Recorded动作或它们(Associate Automation)到TestCase.例如:
我无法理解同时使用自动编码UI测试和同一TestCase的记录操作的优势?我必须错过一个目标,在我进一步行动之前,我必须知道这个目标.
我知道在将它转换为Coded UI testmethod之后我们可以进一步添加断言数.但这是使用Coded UI,Action录制的唯一优势吗?
有什么建议?
关心Sumeet
我们希望在我们的构建服务器中集成一个自动功能测试解决方案(使用SpecFlow和Coded UI开发).
该项目看起来像这样:
有人可以帮我构建服务器集成过程吗?这样做的主要步骤是什么?我们是否需要将构建服务器上的VS版本升级到2012 Premium?还有其他一些解决方案/解决方法吗?
注意:我是集成,构建服务器配置等方面的新手.
谢谢,
build-process automated-tests build-server coded-ui-tests specflow
我正在使用VS2013/CodedUI,在我的[TestMethod]中我声明如下:
Assert.IsTrue(String.Equals(logo.GetModifiedBy(), "Vendor2"));
Run Code Online (Sandbox Code Playgroud)
这在我的测试用例中如预期的那样失败,但输出中的消息如下所示,有没有办法报告用于比较的数据?我搜索但没有找到太多
Message: Assert.IsTrue failed
Run Code Online (Sandbox Code Playgroud) 我正在使用CodedUI进行自动化测试.当我使用两个应用程序时,假设A和B.需要在每个测试用例的执行开始时启动.所以我把它放在TestInitialize中.所以我从TestInitialize调用一个函数并发送参数,即应用程序A的位置.但是,如果有不同版本的应用程序,我想将参数发送到TestInitialize.
[TestInitialize()]
public void MyTestInitialize()
{
App_Launch(@"C:\Emulator\App_Version1\Launch_App.exe");
}
Run Code Online (Sandbox Code Playgroud)
有diff应用程序版本所以如果我必须启动App_Version2然后我必须更改硬编码的参数中的文件夹名称.
[TestInitialize()]
public void MyTestInitialize(string Path)
{
App_Launch(@Path);
}
Run Code Online (Sandbox Code Playgroud)
将路径发送到TestInitialize
我试图在我的Microsoft Visual Studio 2010中实现AssemblyInitialize/AssemblyCleanup属性,其目的与此处所述的完全相同.该链接甚至描述了我需要遵循的实现代码的过程.
这个目的的快速摘要是创建一个初始代码块,它将在任何测试之前运行,无论我在解决方案中运行哪个codedUITests,然后是在最后一个codedUITest完成之后运行的代码块.示例:我需要打开一个特定的应用程序,然后运行一系列的encodeUITests,它们都从该应用程序开始,以任何顺序执行,然后在一切完成后关闭应用程序; 这比为每个codedUITest打开/关闭应用程序更有效.
我不明白的是我需要将代码放在该页面底部(也在下面显示).我把所有代码都放在我的'公共部分类UIMap'之下并且代码运行,除了它在每个CodedUITest之前/之后运行'OpenApplication'和'CloseApplication'命令,而不是将整个CodedUITests组合在一起.
如何正确实现代码?
更新:
我昨晚发现了AssemblyI/C,我花了3个小时试图找出放置代码的位置,以便它可以工作.如果我将AssemblyInitialize放在特定测试方法的开头,那么:
1)它仍然无法运行 - 它给了我一些错误,说UIMap.OpenWindow()和UIMap.CloseWindow()方法需要是静态的,我无法弄清楚如何使它们静态.
2)具有AssemblyI/C的特定[TestMethod]是否需要在测试集中?在我的情况下,我有十几个CodedUITests需要单独运行或在更大的组中运行,我需要让AssemblyI/C打开/关闭我正在测试的窗口.
我在我的网站上使用VS2012.我想记录方法和断言,然后根据我的需要手动更改它们.我尝试了这个并添加了属性和变量并更改了方法的内容并且工作正常,但后来我尝试记录另一个方法并生成代码 - 它删除了我所做的一切,因为它与UI映射不匹配.有没有正确的方法呢?
我是编程新手,这可能是一个非常基本的问题,但我想知道[括号]中放置的项目,例如[TestMethod]和[CodedUITest],以及它们在.NET中的作用.为什么这些方法是以这种方式编写的?
谢谢
我曾为 Web 应用程序使用过编码 UI,但这是我第一次尝试将编码 UI 用于 WPF。我想从组合框中单击一个项目但是,我无法在 WPF 中实现相同的目标。我试图遍历组合框内的项目,但没有奏效。尝试使用搜索属性 - 没有结果。此外,试图找出 AutomationElement 的东西,但无法获得解决方案。如果我能了解实现要求所需遵循的方法,那就太好了。
我已经捕获了控件并想使用它们。没有录音和回放。
我已经从VS 2013更新到VS 2015,TFS 2013更新到TFS 2015和.NET 4.5.2到.NET 4.6.1.
现在我遇到了我的编码UI测试没有运行的问题.问题是Microsoft不支持使用TFS 2015的测试代理和测试控制器.他们建议在使用TFS 2015运行编码的UI测试时使用Agents for VS 2013 Update 5(请参阅此处或此处).
我为每个测试得到的错误是:
单元测试适配器引发异常:无法加载文件或程序集'Microsoft.VisualStudio.QualityTools.CodedUITestFramework,Version = 14.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件..
测试代理程序上可用的版本为12.0.0.0(由Agents for VS 2013 Update 5提供).
我有一个运行VS 2015的构建控制器,它在编译期间具有所需的程序集.在我的测试代理上,这些程序集不可用,因为我无法安装VS 2015的代理.原因是不支持并行安装Agent for VS 2013和Agents for VS 2015 [我自己试过这个 - 它不起作用].
这里建议扩展App.config.这种方法对我来说不起作用(无论是使用asm.v1还是使用asm.v2).
在我的*.csproj文件中,所有引用都列出了特定的version = false.
我还尝试复制程序集(复制local = true)并将它们添加为部署项目,但这是一个永无止境的程序集列表....
我有什么想法可以解决这个问题吗?
谢谢
目前我想改进测试用例.由于我们已经使用MVVM切换到WPF,我正在考虑编写单元测试以使用视图模型(测试视图模型)或更好地使用编码的ui测试.有什么选择,或者正在测试两种方式?目前我找不到任何实际的答案,也许有人有一个直截了当的答案.
谢谢!
coded-ui-tests ×13
c# ×6
automation ×2
testing ×2
wpf ×2
.net ×1
build-server ×1
mstest ×1
mvvm ×1
specflow ×1
swift ×1
tfs-2015 ×1
tfs2012 ×1
unit-testing ×1
web ×1
wpf-controls ×1
xcode ×1
xcuitest ×1