3

我正在对在 sharepoint 中开发的应用程序使用 CodedUI 测试。问题是它不能在不同的环境中工作。所以我必须为每个环境重新记录测试,这很麻烦并且容易出错。

经过一番调查,事实证明,为服务器生成的 clientId 在每个环境中的 webpart 控件中都不同(即使页面中的所有内容都完全相同——masterpage、pagelayout、webparts)。

为了解决这个问题(几乎),我想编辑 SearchPropertyExpressions 以仅使用带有“包含”运算符的 clientID 的最后一段。如果您在 Designer.cs 中手动编辑生成的代码,这将非常有效。

我的问题是,有没有简单而优雅的方法来自动化这个?

到目前为止,这是我尝试过的:我用自己的函数替换了索引器设置器 PropertyExpressionCollection 类。我使用此函数来检查正在设置的值并使用字符串“ctl”更改值并将其替换为字符串的最后一段(例如将“ctl0123_textbox1”替换为“textbox1”),最后使用包含运算符。它工作正常。但是它在过滤掉输入时是不分青红皂白的——它不关心它是过滤器还是搜索,它甚至不知道它属于什么类型的控件。这种方法确实很hacky。

4

1 回答 1

2

我们现在面临完全相同的问题(必须支持我们应用程序的 20 个自定义版本)。我们得出的一般解决方案:

1) 从业务逻辑抽象 UI 交互(我们有 UITestControls 的自定义结构,它从 XML 文件反序列化它们)

2) 为每个客户端根据需要调整 UI 交互逻辑,并按照开发人员调整应用程序的方式对其进行分支

3)因此,对于应用程序的每个分支(“不同的环境”),我们有相同的逻辑但不同的 UI 层

4)我们现在可以为我们的测试提供打算在这个环境中使用的 XML UI 符号文件,并且很高兴

这个解决方案很难,需要一些复杂的代码,但给了我们所需的灵活性。而且,好吧,我们不记录我们的测试,我们从头开始创建它们,所以代码干净,更易于维护。

希望这可以帮助。如果您需要,我可能会提供更详细的信息。

于 2011-09-02T15:29:03.203 回答