通过Coded UI录制脚本自动化创建SharePoint Designer Reusable Workflow

Coded UI非常好,我开始还在想,怎么样能让一个通过SharePoint Designer创建的Workflow publish三百五十次?想不到一个好的方法,也不知道SharePoint Designer里那个publish按钮调用的是什么方法,想来想去还是用Coded UI尝试了一下,发现也挺好,在资源允许的情况下,就这样完成了SPD Workflow的自动化创建:

1. 首先,你得有个SPD Workflow

2. 通过我第一次录制的脚本发现,SharePoint本身有个bug,就是如果你在Publish完这个Reusable Workflow之后如果不去SharePoint List的Workflow Settings页面刷新一下的话,这个Publish的版本根本就没有创建成功,于是我第二次录制的脚本中有多了一步,就是在Publish Workflow之后要去往Workflow Settings页面刷新一下,这样就能确保Workflow每次Publish都是成功的:

具体的脚本流程如下,其实和你操作SharePoint Designer Publish Workflow的步骤是一样的,只不过在最后两步——Publish Workflow和刷新Workflow Settings页面这里我加了一个循环,以达到自动化创建欲达到的次数,就是这样(过程详见我注释行括号中加的汉语):

public void RecordedMethod()
        {
            #region Variable Declarations
            WinButton uIItem30828CI1Button = this.UIHttpmgluca10000sitesWindow.UIItem30828CI1ListItem.UIItem30828CI1Button;
            WinButton uIWorkflowsButton = this.UIHttpmgluca10000sitesWindow.UIWorkflowsListItem.UIWorkflowsButton;
            WinListItem uIRe10ListItem = this.UIHttpmgluca10000sitesWindow.UIItemWindow1.UIItemList.UIRe10ListItem;
            WinButton uIPublishButton = this.UIHttpmgluca10000sitesWindow.UIItemWindow.UISaveToolBar.UIPublishButton;
            WinEdit uIAddressEdit = this.UIMsnWindowsInternetExWindow.UIItemWindow.UIAddressBarClient.UIAddressEdit;
            BrowserWindow uIMsnWindowsInternetExWindow = this.UIMsnWindowsInternetExWindow;
            HtmlHyperlink uIShareHyperlink = this.UIMsnWindowsInternetExWindow.UIWorkflowSettingsDocument.UIShareHyperlink;
            HtmlDocument uIWorkflowSettingsDocument = this.UIMsnWindowsInternetExWindow.UIWorkflowSettingsDocument;
            #endregion

            // Launch ‘%ProgramW6432%\Microsoft Office\Office15\SPDESIGN.EXE‘(打开SPD)
            ApplicationUnderTest sPDESIGNApplication = ApplicationUnderTest.Launch(this.RecordedMethod4Params.ExePath, this.RecordedMethod4Params.AlternateExePath);

            // Click ‘30828CI1‘ button(点击相应的站点)
            Mouse.Click(uIItem30828CI1Button, new Point(48, 10));

            // Click ‘Workflows‘ button(点击Workflows)
            Mouse.Click(uIWorkflowsButton, new Point(54, 7));

            // Click ‘re10‘ list item(点击相应的Workflow)
            Mouse.Click(uIRe10ListItem, new Point(35, 13));

            // Click ‘Publish‘ button(点击Publish按钮)
            Mouse.Click(uIPublishButton, new Point(13, 31));

            // Go to web page ‘http://go.microsoft.com/fwlink/p/?LinkId=255141‘ using new browser instance(打开浏览器)
            this.UIMsnWindowsInternetExWindow.LaunchUrl(new System.Uri(this.RecordedMethod4Params.UIMsnWindowsInternetExWindowUrl));

            // Click ‘Address‘ text box(点击浏览器地址栏)
            Mouse.Click(uIAddressEdit, new Point(216, 2));

            // Go to web page ‘http://mglu-ca:10000/sites/30828CI1/_layouts/15/WrkSetng.aspx?List={C9B1EDD4-8B24-4115-9753-3113D02BE3C1}‘(输入Workflow Settings页面的地址)
            uIMsnWindowsInternetExWindow.NavigateToUrl(new System.Uri(this.RecordedMethod4Params.UIMsnWindowsInternetExWindowUrl1));

            // Set flag to allow play back to continue if non-essential actions fail. (For example, if a mouse hover action fails.)
            Playback.PlaybackSettings.ContinueOnError = true;

            // Mouse hover ‘Share‘ link at (8, 3)
            Mouse.Hover(uIShareHyperlink, new Point(8, 3));

            // Reset flag to ensure that play back stops if there is an error.
            Playback.PlaybackSettings.ContinueOnError = false;

            int i=0;
            while (i < 350)
            {
                // Click ‘Publish‘ button(点击Publish按钮)
                Mouse.Click(uIPublishButton, new Point(23, 31));

                // Type ‘{F5}‘ in ‘Workflow Settings‘ document(刷新Workflow Settings页面)
                Keyboard.SendKeys(uIWorkflowSettingsDocument, this.RecordedMethod4Params.UIWorkflowSettingsDocumentSendKeys, ModifierKeys.None);
            }
        }

就这样,一个自动化创建SPD Workflow的任务就完成了,还挺快的,一分钟差不多创建10个SPD Workflow左右,半个小时左右弄完。

不过这是通过最接近用户操作的方法实现的,却不是通过直接调用相关API实现的。

还希望有大神能给出直接调用相关API实现Publish SPD Workflow的方法,共同学习,共同进步。

时间: 2024-11-05 04:51:38

通过Coded UI录制脚本自动化创建SharePoint Designer Reusable Workflow的相关文章

如何使用Coded UI Test对Webpage进行自动化测试

在Visual Studio中,Coded UI Test已经不是什么新特性了,较早版本的Visual Studio中就已经有这个东东了.它主要用来帮助自动化测试工程师和开发人员确保程序在UI方面没有任何问题.这其中包含了丰富的内容.在这之前,我一直对自动化测试的工作以及什么是自动化测试一知半解,具备自动化测试编码能力的工程师所掌握的技能在某种程度上要远超程序开发人员和设计人员,对于这一点,我早有耳闻!但直到亲身体验我才确信,测试工作远没有我们想象得那么简单.开发人员或许花上数小时就可以完成项目

Windows Phone 8 测试自动化初探 (利用Coded UI)

前言 Windows Phone是个相对新的的平台,目前应用的数量少,相同应用的功能实现度也不如iOS和Android. 那么在Windows Phone上面的自动化测试的解决方案有什么? 目前就msdn来看,SeeTest是微软推荐的测试方案. 大家知道微软在VS里面集成了自动化测试工具Coded UI,那么Coded UI除了能测Windows, Web应用,它能不能支持Windows Phone应用呢? 利用Coded UI做Win Phone自动化的过程 利用Coded UI是可以做Wi

selenium IDE 录制脚本入门

之前一直用robot framework做web端的自动化,那命令,那xpath找的我心累.. 终于发现原来还有seleniun IDE这等好用的工具... 顺便想学习一下用java selenium写一点自动化(扯远了) 一.首先下载个firefox(firebug真心好用) 二. 到官网下载selenium IDE,http://seleniumhq.org/download/,如果你运气好,直接就可以安装成功了....我是一直点下载没有反应...: 选择firefox的附加组件管理器,搜索

C#中通过Coded UI Test Web Page初体验(图文并茂,去繁就简!亲测通过哦~)

今天首次按照网上的步骤进行Coded UI测试,终于测试通过了,我这次进行的自动化测试是:打开浏览器,输入www.baidu.com,然后输入lty,然后点击页面中第一条数据的左侧位置(为了能获取到TestResult方法中需要的值). 浓缩后的步骤如下: 1.File-->New-->CodedUITestProject: 2.创建后直接就可以录制脚本,也可以不录制,在项目中右键UIMap.uitest点击Edit With Coded UI Test Builder: 3.点击小红点开始录

JMeter学习(二)录制脚本

Jmeter 是一个非常流行的性能测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细:很它的优点也有很多: l       开源,他是一款开源的免费软件,使用它你不需要支付任何费用, l       小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具. l       功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库.FT

Jmeter 录制脚本

原文:Jmeter 录制脚本 Jmeter中有2种方法可以录制脚本.  不过我个人非常不推荐录制脚本,录制的脚本混乱,需要再次加工才能使用. 像我这么精通HTTP协议的人. 一直都是使用Fiddler来抓包,然后自己写脚本. 无论如何,本文还是要介绍下两种录制脚本的方法 方法一:  使用badboy来录制脚本 badboy本身是一个针对Web的测试工具,它录制的脚本可以直接供Jmeter使用 官方网站:http://www.badboy.com.au/ 打开badboy, 如何录制脚本, 录制完

什么是Coded UI

什么是Coded UI Coded UI Test是Visual Studio 2010对于Testing Project(测试工程)提供的关于UI自动化测试的框架,支持Win32,Web,WPF等UI的自动化测试,是一个非常强大的测试工具,Coded UI支持自动录制和手动编写. Coded UI能干什么 打开应用程序 模拟用户操作 获取UI元素 UITestControl:所有UI类库的基类 Web测试类库:HtmlControls(HtmlButton,HtmlDiv等) Winform测

zhuan:JMeter基础之—录制脚本

Jmeter 是一个非常流行的性能测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细:很它的优点也有很多: l       开源,他是一款开源的免费软件,使用它你不需要支付任何费用, l       小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具. l       功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库.FT

利用ARM批量自动化创建SSD多磁盘RAID0虚拟机

在实际生产环境大规模部署的时候,有时需要能批量创建多台Linux虚拟机,并且该虚拟机带多个硬盘,一些数据库环境,比如MySQL和MongoDB等,会需要超过10000de IOPS, 那么创建的虚拟机,最好可以自动化创建RAID 0磁盘阵列,以满足高IOPS的要求,另外Availability Set,NSG,public IP,DNS等等当然是必不可少的. 对于这样一个复杂的需求,有多种选项可以考虑,但各有优劣,有些由于限制,可能无法工作: 使用VMSS,可以快速扩展,自动收缩,但目前并不支持