C# CodedUI测试-无法在sharepoint中跨环境重复使用测试

C# CodedUI测试-无法在sharepoint中跨环境重复使用测试,c#,sharepoint,coded-ui-tests,C#,Sharepoint,Coded Ui Tests,我正在对sharepoint中开发的应用程序使用CodedUI测试。问题是它无法在不同的环境中工作。因此,我必须重新记录每个环境的测试,这很麻烦而且容易出错 经过一点调查,结果表明,为服务器生成的clientId在Web部件中控制着不同的环境(即使页面中的所有内容都完全相同—母版页、页面布局、Web部件) 为了解决这个问题(几乎),我考虑编辑SearchPropertyExpressions,只使用clientID的最后一段和一个“contains”操作符。如果您在designer.cs中手动编

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

经过一点调查,结果表明,为服务器生成的clientId在Web部件中控制着不同的环境(即使页面中的所有内容都完全相同—母版页、页面布局、Web部件)

为了解决这个问题(几乎),我考虑编辑SearchPropertyExpressions,只使用clientID的最后一段和一个“contains”操作符。如果您在designer.cs中手动编辑生成的代码,这将非常有效

我的问题是,有没有简单而优雅的方法来实现自动化

以下是我迄今为止所尝试的:
我使用自己的函数创建了indexer setter PropertyExpressionCollection类。我使用此函数检查正在设置的值,并使用字符串“ctl”更改值,并将其替换为字符串的最后一段(例如将“ctl0123_textbox1”替换为“textbox1”),最后使用contains运算符。它很好用。但它不分青红皂白地过滤掉输入——它不在乎是过滤还是搜索,甚至不知道它属于哪种类型的控件。这种方法确实很粗糙

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

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

2) 对于每个客户端,根据需要调整UI交互逻辑并将其分支,与开发人员调整应用程序的方式完全相同

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

4) 现在,我们可以为我们的测试提供用于此环境的XMLUI表示法文件,并且非常高兴

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

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

我从来没有想过要破解CLR这个好主意。