Uipath初体验

玩了三天Uipath Studio, 记录一下自己的体验。

最初目标:用Uipath automate通过Dataloader往Salesforce导入数据的过程。

背景需求:通过Dataloader往Salesforce导入数据的流程步骤清晰明确,工具本身没有动态变化的元素,感觉比较好抓取UI元素进行automate. 导入少量数据文件时,手工操作其实并不麻烦耗时,但是做成自动化之后,对于导入大量数据文件的情况可节省重复繁琐的人力。而且Dataloader一旦关闭,再次启动后需要重新输入账号信息进行登录,对于频繁从一个环境导出数据再到另一个环境导入数据的情况,登录非常麻烦。自动化之后,自动获取Host URL和账号信息,切换环境快速。初次体验实现的是通过Dataloader往Salesforce导入数据的过程,后续可根据需要扩展Update/Upsert/Delete/Export功能。

过程:一开始使用Uipath时没有头绪,Uipath里面有很多的组件(Activity),每个组件完成特定的原子功能,通过拉取组件按顺序排列形成workflow来实现操作过程。一开始不清楚每个组件的原子功能颗粒度是多大,每一个页面操作对应拉取什么组件来实现。想起Uipath具有录制回放功能,所以利用录制功能将需要实现的操作过程录制了一遍,保存,回放,回放一遍基本无错误。基于录制,查看它是如何实现该过程的,对于sequence, process的结构,基本的activity, 如Click, Type就基本清楚了。接下来就是在录制的基础上进行修改,使流程能更灵活地满足需求。想法如下:

1. 优化Dataloader启动过程。录制是拿desktop作为informative screenshot, 点击Dataloader的图标启动的。desktop图标是很容易变化的,一旦变化,Uipath就无法找到Dataloader的图标启动,需要优化。

2. 登录Dataloader的username, password, host URL从外部excel获取。

3. Loop Insert的过程,每一次Insert所需要指定的Object, 待导入文件路径从外部excel获取。

其中,外部excel configuration文件有2个sheets, 一为login信息,一为mapping of object and import file.

由此待解决的知识点有:

1. Uipath怎么读取excel文件,怎么操作excel row/column/cell. 找出具体的activity.

2. Uipath怎么创建参数,怎么传递参数。找出具体的activity.

3. Uipath循环流程怎么实现。找出具体的activity.

4. 另外可能会遇到怎么定位页面元素,怎么debug等问题。

对Uipath的使用:

1. 实操过程中所用到的Activities:

为了不从desktop双击启动application, 目前找到的Uipath activity有两个:

Open Application & Start Process

FileName - The full file path where you can find the executable file of the application you want to open.

Arguments - The parameters that can be passed to the application at startup.

因为Dataloader是个.bat文件,它启动时还依赖同路径下的其他文件,用上面两个activity不起作用。尝试过用run bat script, 但是报错;想过一步一步打开command prompt, 再输入command执行,或是打开文件路径,再双击启动;觉得都有点麻烦,不知道还有什么更方便的办法,目前还是从desktop double click, 将desktop full screenshot替换成了仅shortcut.

Indicate On Screen

SelectScreenRegion - When this check box is selected, you can select a region on the screen. 直接点击窗口时,Uipath会自动截取部分或全部窗口;使用SelectScreenRegion来尽量去除无关因素的影响只框定在不变的区域。

Click ('list item'/'Button')

ClickType - 录制时不管实际是单击还是双击,默认选择的是CLICK_SINGLE,需要根据实际情况修改。

Type Into

Text - 需要输入的值,该输入框后面带有一个小'+'号,可选择在输入值之后按某special key, 如enter.

ClickBeforeTyping - 将鼠标focus到输入框。

DelayBetweenKeys - 输入值时字符之间的延迟时间,以毫秒算。

EmptyField - 输入值之前将输入框内先清空。

Uipath在Dataloader登录界面输入用户名时发生了一个奇怪的现象,用户名为email格式的,如'xiao.huang.hun@test.com', 从excel读取出来的每次都是正确的,但是输入到用户名输入框时有的时候会丢失一个点变成如'xiaohuang.hun@test.com', 这个问题随机发生,每次发生时都是丢失了同一个位置的点,没有搞明白。直到查询另一个问题时无意中看到有人说可尝试将'DelayBetweenKeys'设大一点,一试有效,目前没再出现过问题。但根本原因是什么还没弄懂,求解释。

Excel Application Scope

WorkbookPath - 指定待操作的excel文件的路径。

跟excel有关的操作都放置在这个container之内。关于对excel的操作,查看这篇文章的例子可有个基本了解:https://docs.uipath.com/activities/docs/read-from-excel-files

Read Cell

读取excel单元格。

Cell - 单元格,如'A1'.

Read Range

读取excel区域。详情参见:https://docs.uipath.com/activities/docs/read-range

Range - 区域,如'A1:C3'. 不指定时填入"", 表示读取指定sheet里面全部区域。

输出值仅支持DataTable类型。参见:https://docs.uipath.com/studio/docs/data-table-variables

For Each Row

循环语句,对excel每一行进行处理。如'ForEach row in dataTable'. 使用例子可参考:https://docs.uipath.com/activities/docs/remove-data-row-column

Get Row Item

获取excel一行中的某一列的值,即某个单位格的值。

ColumnIndex - 列索引

ColumnName - 列名

Row - 所在行

Assign

赋值操作。

Select Item ('ListBox')

勾选'Show all Salesforce objects', 将listbox的滚动条下拉到底,这样使得listbox里面所有的items都加载出来,利用Uipath录制一遍,可自动调用'Select Item' activity并生成所有items的下拉列表,这样就可以直接通过输入选项名来选定该item.

Click Image 点击图片

Click Text

选中Salesforce object并选择待导入的CSV文件之后,Dataloader上有一个'Next'按钮会自动enable起来继续下一步的操作。录制时选择文件的操作是点击截图所示的'list item', 为实现将文件变成参数传入以选择任意文件,尝试了如下方法,这些方法对其他软件可能起作用,但是对Dataloader不起作用。

方法1. 直接在提示选择文件的输入框内输入文件路径。这样可以免去查找的步骤,变成了一个Type Into activity, 简单方便。

方法2. 点击'Browse...'打开文件搜索,进入文件夹之后,在文件名输入框中输入文件名,再点击打开按钮或输入文件名+"[k(enter)]"。这种方式也避免了直接点击文件。

观察发现Dataloader一定要满足选择Salesforce object,并点击'Browse...'去点击选择一个文件,'Next'按钮才会enable起来。最后用的方法是:

点击'Browse...'打开文件搜索,进入文件夹之后,添加一个'Click Text' activity, 'Indicate on screen'选取的是文件夹内部区域,'Input>Text'为文件名,'Input>ClickType'选择'CLICK_DOUBLE'. 这样可根据输入的文件名去双击文件夹内部区域等于所给文件名的部分。

Check ('Button')

选中/不选中勾选框可用Click, 也可用Check. Dataloader上有一个方形勾选框'Show all Salesforce objects'用Click可选中勾选框,可是选中后不能起到显示所有列表选项的作用,但用Check可以。

Message Box

可用于查看在跑的过程中参数的值是什么,用于debug.

Send Hotkey 发送快捷键

2. Uipath以“框框”(container)来界定作用域。常见的如

 'Attach Window'框表示操作所在的窗口;'Do'框表示窗口的操作;'Click'框表示具体的一个操作。

想对哪个窗口做操作,拉取activity时需要拉到对应窗口的container内部去。只对该窗口起作用的参数也要选中该窗口创建。

3. 选中container->右键->Enable/Disable Activity (Ctrl + D), 可对操作进行取消注释/注释。

4. 拼接字符串可以直接将字符/参数相'+', 如fullPath = filePath + fileName + “.csv”

5. 录制是个好功能,任何时候都可以尝试通过录制功能去记录一个手动操作,根据自动生成的activity理解Uipath的行为,再修改activity以满足实际的需求,将其copy/paste到主流程里面去。

6. container层数太多导致不方便区分作用域时,可双击某个container, 进入到仅显示该container及其内部的页面。

这次Uipath体验涉及到的仅九牛一毛,还有更多的功能等待探索。

原文地址:https://www.cnblogs.com/jzbm/p/11983376.html