TagUI教程

TagUI教程

Yiuhang Chan

资源网址

GitHub开源地址:https://github.com/aisingapore/TagUI

中文技术文档:http://www.tagui.com.cn/setup.html

原技术文档:https://tagui.readthedocs.io/en/latest/index.html

环境安装

Windows

资源下载

各类TagUI安装/插件/资源 国内下载,请访问:

链接:https://pan.baidu.com/s/1GrkOxmu9fTBpwzO1JzaNUw?pwd=tagu

各类TagUI安装/插件/资源 原下载,请访问:

TagUI v6.110 zip 文件: https://github.com/kelaberetiv/TagUI/releases/download/v6.110.0/TagUI_Windows.zip

简易自动安装方式 (不建议)

TagUI v6.46 Windows 安装包 ,下载安装即可。

手动配置安装方式

  1. 下载 TugUI zip 压缩包,下载点击: TagUI v6.109 for Windows
  2. 解压到硬盘,例如: D:\,不建议解压在文件夹内
  3. 安装 OpenJDK for Windows(已经安装可跳过)
  4. 安装 Python (已经安装可跳过)
  5. 安装 Chrome 浏览器(已经安装可跳过)
  6. 安装 Microsoft Visual C++ Redistributable 2012 X86 版本(已经安装可跳过)
  7. 环境变量Path增加TagUI路径,注意需要scr目录,不是根目录,例如: D:\tagui\src
  8. Win + R,输入cmd,进入CMD命令行模式。
  9. 复制下面这行命令,粘贴到CMD运行展示样例:(路径改为安装的实际路径)
1
tagui D:\tagui\flows\samples\8_chineseflow.tag

系统编码设置

中文Windows系统的CMD默认编码是GBK,流程执行中的中文会显示乱码,改成UTF-8编码:

  1. 首先,管理员身份打开命令提示符窗口。在窗口顶部右击选择属性,选中选项后会看到默认编码为GBK。(OEM一样乱码)
  1. Win + R 打开运行窗口后输入regedit,点击确定按钮,打开注册表窗口,按照图中的路径打开command processor
  1. 右键新建字符串值,设置完名称后右击打开窗口后输入数值数据chcp 65001,点击确定保存,即可完成设置了

基础功能

执行流程

TagUI通过运行 流程文件 flows 自动执行操作,流程文件扩展名是 .tag

可以在CMD命令提示符/终端中运行流程: 命令使用格式:

当前目录:

1
tagui my_flow.tag

绝对路径:

1
tagui c:\tagui\samples\1_google.tag

也可以设定按固定计划运行流程,按固定计划自动运行流程通常很有用:每月、每周、每天甚至每 5 分钟一次。例如在 Windows 上,使用任务计划程序:

快捷执行

可以使用以下命令创建快捷方式文件 -deploy

1
tagui my_flow.tag -deploy

或者使缩写方式 -d

1
tagui my_flow.tag -d

这将创建一个快捷方式 (my_flow.cmd),只需双击快捷方式即可运行流程。该快捷方式与流程位于同一文件夹中,但可以将其移动到桌面或其他任何位置。

如果想增加更多参数,例如 -headless (-h),可以这样写命令:

1
tagui my_flow.tag -h -d

注意

原.tag文件路径被移动,相关的.cmd快捷文件会失效。

运行云端.tag

可以把.tag文件放在服务器,并用下面命令运行:

1
tagui https://raw.githubusercontent.com/kelaberetiv/TagUI/master/flows/samples/1_google.tag

隐藏浏览器运行

可以不显示Web浏览器来运行Web流程,使用 -headless 参数

1
tagui my_flow.tag -headless

或使用快捷方式-h

1
tagui my_flow.tag -h

这允许在流程运行时正常使用电脑,但如果流程中使用可视自动化(例如OCR、图像识别等),则无法正常运行,因为流程需要读取并单击屏幕上的内容

基础命令

自动化RPA流程是由基础命令组成的,以下是一些常见命令。

click 鼠标左键单击

点击命令,可以使用它来单击Web元素:

1
click Getting started

此命令单击WEB元素,点击定位可以用“ID”,“name”,“class”或“title”属性,这里有个使用 XPath的例子:

XPath是一种强大的定位元素方式,例如:

1
click //a[@class="icon icon-home"]

还可以单击屏幕上的某个坐标点:

1
click (500,300)

命令里的500和300是X-Y坐标。此命令点击距离屏幕左侧为500像素,距离屏幕顶部300像素的位置。可以在TagUI Live模式下使用 mouse_xy() 辅助函数寻找XY坐标点,当然更推荐使用一些小工具更方便的知道XY坐标。

click还可以使用图像识别(Visual Automation)单击先前保存的图像所匹配的位置。下面这条命令会在屏幕范围寻找类似 button.png 的位置,然后单击它。注意:TagUI只识别桌面区域,浏览器区域不一定识别。

1
click button.png

当然,好的编程习惯,是把图片都放在 image 目录下:

1
click image/button.png

WEB访问

直接输入网址,TagUI就会在Chrome里打开:

1
https://somewebsite.com

type 文本输入

可以在网络输入中输入内容。此命令以与单击步骤相同的方式查找元素some-input(元素定位),并在其中键入some-text(文本内容):

1
type some-input as some-text

可以用 [clear] 来清除元素文本,用 [enter] 来按回车:

1
type some-input as [clear]some-text[enter]

也可以用图片进行输入定位, 类似 click 一样:

1
type some-input.png as some-text

read 读取元素,可读取文本 或某些属性值

read 命令读取元素的文本,并且赋值给变量。

下面命令里的 some-element 是元素, some-variable 是变量:

1
read some-element to some-variable

read 还可以使用Visual Automation和OCR功能从屏幕区域读取文本。依赖于OCR的读取可能不完全准确。

此命令读取在点(300,400)和(500,550)之间形成的矩形中的所有文本:

1
read (300,400)-(500,550) to some-variable

还可以使用XPath读取Web元素的某些属性值。此命令从元素中读取ID属性:

1
read //some-element/@some-attribute to some-variable

assign 赋值

对变量进行赋值:

此示例使用count() 辅助函数,计算在 id/name/text 中找到的包含“row”的元素数量,并将其分配给一个变量row_count以供以后使用:

1
row_count = count('row')

元素定位

DOM 和 XPath 标识符仅适用于 Chrome/Edge。要自动化其他浏览器,请使用点/区域和图像标识符。

DOM 元素属性定位

1
click Getting started

DOM (Document Object Model) 方式用元素属性进行定位匹配,可以用 id, name, class attributes 或元素本身的文本内容定位元素。注意:这种方式可能因为同名造成定位不准确。

XPath 页面路径定位

1
click //body/div[1]/nav/div/div[1]/a

XPath (XML Path Language)用树状结构来定位元素,表达方式可以理解成“某小区66号楼601室书房里桌子左边的第一个抽屉”。

这是针对 Web 元素的最准确的定位方式,推荐使用 XPath 进行元素定位描述。

信息

可以使用 CSS selectors 代替XPath,但XPath是首选。

Point 坐标点定位

1
click (200,500)

坐标原点是在屏幕左上角,横向称为X坐标,竖向称为Y坐标,Y坐标100表示从上往下100个像素的位置。本条命令会到距离屏幕左侧200像素,距离屏幕顶部500像素的位置 进行点击。

Region 屏幕区域定位

1
read (300,400)-(500,550) to some-variable

这与两点(300,400)和(500,550)之间形成的矩形匹配坐标点。

Image 图像定位

1
click button.png

在全屏范围寻找类似图像文件 button.png 的位置进行点击。首先需要截图保存为 `button.png。

1
click image/button.png

可以使用图片的绝对路径,同时好的编程习惯,是把图片都放到 image 目录下。并且使用容易理解的文件名,例如:button.png

Live mode 用于调试的Live模式

在流程开发中,经常需要测试下一步的操作代码,建议使用Live Mode。

1
tagui live

启动 Live 模式后,可以输入一行才执行一行,这样调试起来很方便。下面这张图展示了这个操作。进入 Live Mode 时,TagUI 会自动打开Chrome。

If 条件语句

if 就是“如果”怎样就怎样 的条件逻辑语言,例如:如果出现“登录按钮”就进行点击。

代码举例: 如果 URL网址包含 “success”, 就点击 buttons1 和 buttons2

1
2
3
if url() contains "success"
click button1.png
click button2.png

url() 是一个辅助函数,用于获取当前网页的网址URL。注意,需要 if 执行的命令,需要在前面缩进空格(或Tab),这表示它们在if块 中。如果满足条件,就执行if块 中的命令。

另一个常见的情况是判断某元素是否存在。在这里,“如果在等待超时后未出现某些元素,则访问此网页”。

1
2
if !exist('some-element')
https://tagui.readthedocs.io/

!否定条件来自 JavaScript,TagUI 代码最终会翻译成 JavaScript。

在下面的示例中,检查变量row_count,是否等于5:

1
2
if row_count equals to 5
some steps

以下是 大于more than 和 小于 less than 的命令方式:

1
2
3
4
if row_count more than 5
some steps
if row_count less than 5
some steps

For 循环

可以在同一流程中使用循环执行多次同样的流程。为了使用不同变量多次运行一个流程,标准方式是使用 DataTables (高级命令).

在此示例中,我们重复块内的流程总共20次:

1
2
3
4
for n from 1 to 20
some step to take
some other step
some more step

functions 函数

函数功能是调用 JavaScript 函数,并且返回需要的值。

每个函数后跟小括号 (),小括号内可以填写函数的参数。

csv_row()

将一些变量转换为CSV文本以写入CSV文件。它将变量作为参数输入,包含在方括号内 [] (实际上是一个数组 array).

1
2
3
4
read name_element to name
read price_element to price
read details_element to details
write `csv_row([name, price, details])` to product_list.csv

clipboard() 剪贴板

从剪贴板读取文本:

1
2
3
4
5
dclick pdf_document.png
wait 3 seconds
keyboard [ctrl]a
keyboard [ctrl]c
text_contents = clipboard()

对于大量文本内容输入,建议将文本先放到剪贴板,在用 Ctrl+V 粘贴,这比用 type 快很多:

1
2
3
4
5
long_text = "This is a very long text which takes a long time to type"
clipboard(long_text)
click text_input
keyboard [ctrl]v
keyboard [enter]

mouse_x(), mouse_y() 获得坐标点当前位置

获取鼠标的x或y坐标。

在偏移点击目标时,需要先获得 x 或 y 坐标,以下代码示例表示,鼠标先移动到 element.png ,再获得偏移的 x 和 y ,然后单击元素右侧的200像素:

1
2
3
4
hover element.png
x = mouse_x() + 200
y = mouse_y()
click (`x`,`y`)

mouse_xy()

在Live模式下,可以使用 echo `mouse_xy()` 找到鼠标的坐标。

注意,这里用的不是单引号

而是键盘数字1左边按键的

`

1
echo `mouse_xy()`

高级命令

保存流程运行结果

tagui/src/tagui_report.csv 可以使用-report选项(快捷方式)保存运行的 html 日志和流程运行结果-r

1
tagui my_flow.tag -report

CSV 文件将显示每次运行的一行、开始时间、完成时间、运行期间的任何错误消息、该运行日志文件的链接以及用户的工作组\用户 ID。

处理异常和错误

当流程没按预期进行时,有3种方法可以在Tagui中处理。

第一种方式是针对单条指令错误处理,可以增加 if 判断来预防。例如,检查是否缺少某些UI元素,然后执行XYZ步骤。使用这种方式。

第二种方式是对针对某个流程的错误处理。类似下面的语法,当 Flow.tag 成功运行时才运行。当它检测到丢失(缺少截图文件)或其他一些未知错误时,Tagui将自动抛出错误。

Windows 代码例子:

1
2
call tagui flow.tag || tagui error.tag
call tagui flow.tag && tagui success.tag

第三种方式是全局错误处理。可以对 TagUI 进行配置,以便在每次运行后,进行特殊处理,将报告选项生成的数据或文件发送到某个目标文件夹或 API 端点,以进行错误/成功处理。例如,将所有自动化运行同步到中央存储以进行审计。特殊处理适用于所有运行的 TagUI 流。

DataTables数据表格批量自动化

DataTables是 csv 文件,可以把数据表格作为变化,多次循环运行流程。

Datatable数据文件 (trade_data.csv) 类似下面格式:

# trade username password pair size direction
1 Trade USDSGD test_account 12345678 USDSGD 10000 BUY
2 Trade USDSGD test_account 12345678 USDJPY 1000 SELL
3 Trade EURUSD test_account 12345678 EURUSD 100000 BUY

要使用它,可以使用 运行流程。 TagUI 将为数据表中的每一行运行一次(标题除外)。tagui my_flow.tag trade_data.csv``my_flow.tag

在流程中,TagUI 可以使用变量tradeusernamepassword等,就好像它们位于本地对象存储库中一样,并且值将来自该运行的行。

要知道的流程处于哪个迭代中,可以使用该iteration变量:

1
2
3
4
5
6
echo current iteration: `iteration`
if iteration equals to 1
// go to login URL and do the login steps
www.xero.com

// do rest of the steps for every iteration

可重用性的对象存储库

对象存储库是可选的csv 文件,可以存储在流中使用的变量。它们有助于将流与个人数据(例如 Web 流的登录信息)分开,并允许在多个流之间共享通用信息以便于更新。

每个流都有一个本地对象存储库,所有流共享全局对象存储库。本地对象存储库tagui_local.csv与流位于同一文件夹中。全局对象存储库位于tagui_global.csvtagui/src/文件夹中。

对象存储库可能如下所示:

object definition
email user-email-textbox
create account btn btn–green btn-xl signup-btn

在流程中,TagUI 可以使用对象email,作为变量,并且在运行之前它们将直接被定义替换。局部定义优先于全局定义。create account

如果user-email-textbox是某些 Web 文本输入的标识符,那么可以在流程中使用以下内容:

1
type `email` as [email protected]

调用流程

可以通过将大型工作流程文件分解为许多子流程文件来模块化 RPA 工作流程。对于更复杂的 RPA 场景,甚至可以让一个子流程运行其他子流程。

这样做的一些常见原因包括方便在其他流程中重用相同的子流程、通过在子流程中保留步骤顺序来执行更容易组织的特定操作,或者将 Python 或 JavaScript 代码和函数存储在单独的子流程中(使用例如 py beginpy finish 代码块)。

在一个流程内调用另一个流程,命令如下:

1
tagui login_crm.tag

被调用流程也可以存储在子文件夹中:

1
2
3
4
5
// Windows example
tagui CRM\login.tag

// Mac/Linux example
tagui CRM/login.tag

变量可以在父流程和子流程之间使用:(可以理解成变量是全局的)

1
2
3
4
5
6
7
8
9
10
11
// username 和 password 变量可以被使用在 login.tag
username = 'jennifer'; password = '12345678';
tagui login.tag

// 也可以把变量分行来写,这样更清晰
username = 'jennifer'
password = '12345678'
tagui login.tag

// 在子流程 login.tag 里,也可以定义和返回变量,给父流程使用
echo `login_result`

可以在父子流中赋值变量 action = 'login',配合 if 来控制具体执行哪个子流程:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// crm_steps.tag
if action equals to 'login'
do some steps
do some more steps

else if action equals to 'report'
do some steps
do some more steps

else if action equals to 'logout'
do some steps
do some more steps

else
echo ERROR - action undefined

Turbo mode 极速模式,10倍速运行

运行流产时,可使用 turbo 参数开启极速模式(谨慎使用):

1
2
3
4
5
tagui flow.tag -turbo

or

tagui flow.tag -t

大多数网站和桌面应用程序都无法适应TagUI的极速模式。如果RPA以超出这些网站的速度运行,经常会报错。报错的点可能是字段和数据未正确填写,表单缺少数据等。

极速模式下问题可能会随机发生,包括在PC上工作,但由于CPU速度的差异而无法在另一台PC上工作。因此,不建议使用Turbo极速模式。实际应用中,如果用极速模式造成某些数据错误,可能最终需要花费更多时间来排除或修复错误造成的后果。

但是,极速模式对某些特定场景的某些用户非常有用。例如,从应用程序中获取数据,超越人类速度的Web端数据输入等。

视觉自动化 OCR

对于许多步骤,可以使用或来结束步骤,告诉 TagUI 使用 OCR(光学字符识别)与屏幕上的某些 UI 元素进行交互。请参阅下面的示例。可以执行此操作的步骤:单击、rclick、dclick、悬停、键入、选择、读取、捕捉、exist()、present()。using ocr``using OCR

1
2
3
4
5
6
7
8
9
10
click Submit using ocr

if exist('Special Offer using ocr')
click Add To Cart using OCR

// various usage combinations for select step
select Dress Color using OCR as Dark Blue using OCR
select dress_color.png as Bright Pink using ocr
select Dress Color using OCR as dark_black.png
select dress_color.png as bright_white.png

如果使用图像编辑器将文件中 UI 元素的背景设置为.png100% 透明,则 TagUI 将能够定位该元素,无论其背景如何。

相反,还可以删除某些锚元素(例如框架)附近的前景内容,以便可以使用读取步骤对空白区域中的不同内容进行 OCR。

在流程中编写Python

可以在 TagUI 流程中编写 Python 代码。Python 开发环境需要单独安装。

使用 py 命令告诉 TagUI 调用 python 运行python命令。可以将字符串值传递回 TagUI 然后在Python里 print()。 Python 运行结果将存放到 TagUI 变量 py_result 里。

1
2
3
4
5
py a=1
py b=2
py c=a+b
py print(c)
echo `py_result`

也可以使用 py beginpy finish 来告诉 TagUI 这部分是 Python 语言:

1
2
3
4
5
6
7
py begin
a=1
b=2
c=a+b
print(c)
py finish
echo `py_result`

可以这样将变量传递给Python:

1
2
3
4
5
6
7
8
9
phone = 1234567
py_step('phone = ' + phone)
py print(phone)
echo `py_result`

name = 'Donald'
py_step('name = "' + name + '"')
py print(name)
echo `py_result`

要传递并返回更复杂的数据,例如多个变量,可以使用 JavaScript 和 Python JSON 库来发送和接收 JSON 字符串。传递2个变量,执行一些处理,并返回2个变量:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
a = 1
b = 2
c = {"a":a, "b":b}
json_c = JSON.stringify(c)
echo `json_c`
py_step("json_c = '" + json_c + "'")

py begin
import json
c = json.loads(json_c)
d = c["a"] * 10
e = c["b"] * 10
f = {"d":d, "e":e}
json_f = json.dumps(f)
print(json_f)
py finish

echo `py_result`
f = JSON.parse(py_result)
echo `f.d`
echo `f.e`

上面将 2 个变量从 TagUI 传递到 Python,进行修改,返回 2 个变量,并显示下面的 ef

1
2
10
20

创建运行Log日志便于调试

要执行高级调试,可以通过在 tagui/src/中创建一个空的tagui_logging文件,在运行流程时记录运行日志。

  • my_flow.log 存储一步步的执行记录。
  • my_flow.js 是已运行的生成的JavaScript文件。
  • my_flow.raw is the expanded flow after parsing modules.

运行云端 TagUI

可以使用 免费 Google 服务器 运行Web浏览器或手机上的 Tagui。可以在浏览器的不同选项卡上同时运行最多5个会话。

为了对在云上运行的更多控制,可以在首选的云供应商上运行此Docker 映像 (使用边缘标签获取最新版本)或Docker 文件。

或者在 OpenFlow 上的免费 Node-RED 实例 上运行。 Docker 镜像、Docker 文件和 OpenFlow 云由Allan Zimmermann 维护和赞助。

命令手册

在这里查询各种命令、辅助功能和运行选项

流程命令

鼠标和键盘命令

click 单击

鼠标左键点击目标

可以使用 DOM, XPath Point, Image进行目标定位。

1
click [DOM/XPath/Point/Image]

例子:

1
2
3
4
click Main concepts
click //nav/div/div[2]/ul/li[4]/ul/li[1]/a
click (500,200)
click button.png
rclick 右键单击

鼠标右键单击目标

可以使用 DOM, XPath Point, Image进行目标定位。

1
rclick [DOM/XPath/Point/Image]

参考 click 例子。

dclick 双击

鼠标左键双击目标

可以使用 DOM, XPath Point, Image进行目标定位。

1
dclick [DOM/XPath/Point/Image]
hover 鼠标移动

鼠标移动到目标位置

1
hover [DOM/XPath/Point/Image]
type 输入

Web输入命令,可以使用 [clear] 清除字段和 [enter] 来点击ENTER键。

可以使用 DOM, XPath Point, Image进行目标定位。

1
type [DOM/XPath/Point/Image] as [text to type]

例子:

1
2
3
4
5
6
7
8
9
type search-term as John Wick
type //input[@name="search"] as John Wick
type (500,200) as John Wick
type input_field.png as John Wick

type search-term as [clear]John Wick[enter]
type //input[@name="search"] as [clear]John Wick[enter]
type (500,200) as [clear]John Wick[enter]
type input_field.png as [clear]John Wick[enter]
keyboard 按键/按组合键

模拟键盘按键

1
keyboard [keys]

可以使用以下这些功能按键:

  • [shift] [ctrl] [alt] [win] [cmd] [enter]
  • [space] [tab] [esc] [backspace] [delete] [clear]
  • [up] [down] [left] [right] [pageup] [pagedown]
  • [home] [end] [insert] [f1] .. [f15]
  • [printscreen] [scrolllock] [pause] [capslock] [numlock]

例子:

1
2
3
4
5
6
7
8
keyboard [win]run[enter]
keyboard [printscreen]
keyboard [ctrl]c
keyboard [tab][tab][tab][enter]

keyboard [cmd][space]
keyboard safari[enter]
keyboard []c
mouse 鼠标

在当前鼠标位置,按下鼠标左键/弹起鼠标左键。

1
2
mouse down
mouse up

Web 网页端命令

visit 打开网站/url

直接输入网址url(带上 http),TagUI 就会在 Chrome 打开这个 URL。

1
[URL]

例子:

1
https://google.com
select 下拉选择

修改下拉选择框,注意 as 后面是区分大小写的。

可以用 DOM , XPath 进行目标定位。

1
select [DOM/XPath of select input element] as [option value or text]

例子:

1
select variant as blue
table 保存表格数据

将Table表格数据保存到CSV文件,基于网页的Table编号或其XPath 进行目标定位。

1
2
table [table number] to [filename.csv]
table [XPath] to [filename.csv]

例子:

1
2
3
table 1 to regional_exchange_rates.csv
table (//table)[2] to global_exchange_rates.csv
table //table[@name='report'] to report.csv

把下一步操作放到新标签页里进行。

1
2
popup [新标签页URL的特征部分]
[steps]

例子:popup board 这里也可以使用 popup top.baidu.com/board 效果是一样的。

1
2
3
4
5
https://baidu.com
click 百度热搜
popup board
click 电影榜
// some other steps
frame 针对某些框架操作

指定下一步操作的目标框架范围。

1
2
3
4
5
frame [frame name]
[steps]

frame [frame name] | [subframe name]
[steps]

例子:

1
2
3
4
5
frame navigation
click Products

frame main | register
click Register
download to

指定 Chrome 下载文件的存储位置。默认位置是当前TagUI流程的文件夹。Specifies a location to store file downloads. The default location is the folder of the TagUI flow.

1
download to [folder location]

默认情况下 TagUI 启动后 Chrome 不询问下载存放路径,可以在.tag 文件里增加下面这句,让 Chrome 在下载是询问下载文件存放目录。

1
js chrome_step('Page.setDownloadBehavior',{behavior: 'default', downloadPath: location})
upload

上传文件到网站。

仅支持 DOM 目标定位方式。

1
upload [DOM of upload element] as [filename]

例子:

1
upload #element_id as report.csv
api

调用Web API,并将返回内容保存到变量 api_result

如果 API 返回的是JSON数据格式,将自动创建 api_json

1
api https://some-api-url

例子:

1
2
3
api https://api.github.com/repos/kelaberetiv/TagUI/releases
echo `api_result`
author = api_json[0].author.login

Excel

读取中文配置

控制面板 > 语言 > 管理语言设置 > 更改系统区域设置 > 使用utf-8 提供全球语言支持

对 Excel 执行读取,写入,复制,删除 等操作,比如 [workbook]sheet!range 范围。 本功能适用于 Windows 和 Mac 的 Excel 程序。对于部分需要密码的Excel处理,需要用到 excel_password = 'password'

variables 变量

可以在Excel语法中使用变量,例如范围或表格 range or sheet。TagUI 支持各种版本的 Excel 文件,必须把文件的.扩展名 作为语法的一部分,以便 TagUI 可以识别指令是Excel命令而不是一些JavaScript 代码。

1
2
[`workbook`.xlsx]`sheet`!`range` = 123
data = [`workbook`.xlsx]`sheet`!`range`
visibility 是否让Excel操作可见

默认情况下,Excel 操作将在后台打开并运行,看不到后台的 Excel 操作。如果希望在 Excel 显示状态下操作,可以在流程中使用 excel_focus = true。使用 excel_focus = false 在工作流程中再次将其设置为OFF。

对于某些使用场景,甚至可能不希望 Excel 应用程序在后台可见。在这种情况下,可以在工作流程中设置以不可见方式运行 Excel。用于使 Excel 在 RPA 工作流程中再次可见。excel_visible = false``excel_visible = true

读取Excel

从Excel文件读取数据,支持的相对路径和绝对文件路径。如果指定的文件或工作表不存在,则会显示错误。接着,可以指定单元格或某个范围。

1
variable = [workbook]sheet!range

读取 列column 和 行row 可以使用标准Excel语法范围描述方式,例如: A:A (column A), B:D (columns B to D), 2:2 (row 2), 3:5 (rows 3 to 5)。如果不指定范围,则默认对全部范围进行操作。

例子:

1
2
3
4
5
6
7
8
9
top_profit = [Monthly Report.xlsx]August!E10
top_salesman = [Monthly Report.xlsx]August!E11
data_array = [Quarterly Metrics.xlsx]Main!B3:G100
data_array = [C:\Reports\June.xls]Sheet1!A1:C2

data_array = [C:\Reports\June.xls]Sheet1!A:A
data_array = [C:\Reports\June.xls]Sheet1!B:D
data_array = [C:\Reports\June.xls]Sheet1!2:2
data_array = [C:\Reports\June.xls]Sheet1!3:5

Tagui 的后端语言是JavaScript,因此 Data_array 可以像 JavaScript 数组一样使用。

1
2
3
4
// to work on data in data_array cell by cell
for row from 0 to data_array.length-1
for col from 0 to data_array[row].length-1
echo `data_array[row][col]`

注意 - 读取多行和列有一个限制,举例: B:D and 3:5 (data array returned will be a 1 x N array instead of the correct row x column array)。这个问题在 v6.87 中已经修复。使用 tagui update 命令升级,或者用 MS Word Plug-in Update TagUI 按钮升级。

写入Excel

使用 Write 命令往Excel内写数据。支持相对和绝对文件路径。如果指定的文件不存在,将创建一个新文件。如果表单不存在,将创建新表。 If the data is an array, the given cell will be used as the top-left cell to write the range of cells.

1
[workbook]sheet!cell = variable

例子:

1
2
3
4
[Monthly Report.xlsx]August!E10 = 12345
[Monthly Report.xlsx]August!E11 = "Alan"
[Monthly Report.xlsx]August!E12 = variable
[Quarterly Metrics.xlsx]Main!B3 = data_array

Tagui 的后端语言是JavaScript,因此 Data_array 可以像 JavaScript 数组一样使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
// to assign a set of range data with 2 rows of 3 columns
[C:\Reports\June.xls]Sheet1!A1 = [[1, 2, 3], [4, 5, 6]]
[C:\Reports\June.xls]Sheet1!A1 = [[variable_1, variable_2, variable_3], [4, 5, 6]]

// example spreadsheet data with #, name and country
[Participants.xlsx]Sheet1!A1 = [['1', 'John', 'USA'], [2, 'Jenny', 'Russia'], [3, 'Javier', 'Serbia']]

// get the next row count for the example spreadsheet
column_A = [Participants.xlsx]Sheet1!A:A
next_row = column_A.length + 1

// write a new row accordingly to example spreadsheet
[Participants.xlsx]Sheet1!A`next_row` = [[next_row, 'Janice', 'Brazil']]
copy 复制

在Excel文件中复制数据。支持相对和绝对文件路径。如果指定的目标文件不存在,将创建一个新文件。如果目标工作表不存在,将创建一个新工作表。如果数据是数组,则给定单元格将用作左上角单元格来写入单元格范围。

1
[workbook]sheet!cell = [workbook]sheet!range

例子:

1
2
[Monthly Report.xlsx]August!A1 = [Jennifer Report.xlsx]August!A1
[Monthly Report.xlsx]August!A1 = [Jennifer Report.xlsx]August!A1:E200
delete 删除

删除 Excel 内的数据。支持相对和绝对文件路径。如果指定的文件或工作表不存在,将显示错误。Delete a range of cells by assigning an empty array to it.

1
[workbook]sheet!cell = ""

例子:

1
2
[Monthly Report.xlsx]August!E10 = ""
[Quarterly Metrics.xlsx]Main!A1 = [["", "", ""], ["", "", ""]]

Word

只需将 Microsoft Word 文档的文件名分配给变量即可读取其文本内容,如下所示。 TagUI 将自动 Microsoft Word 复制文本内容并分配给变量。此功能适用于 Windows 和 Mac。

Windows 设置word文件路径举例:

1
2
3
4
5
6
7
8
word_text = [Research Report.docx]
word_text = [C:\Users\Jennifer\Desktop\Report.docx]
word_text = [FY2021 Reports\Research Report.docx]

filename = 'C:\\Users\\Jennifer\\Desktop\\Report'
word_text = [`filename`.docx]
filename = 'Research Report'
word_text = [`filename`.docx]

Mac 设置word文件路径举例:

1
2
3
4
5
6
7
8
word_text = [Research Report.docx]
word_text = [/Users/jennifer/Desktop/Report.docx]
word_text = [FY2021 Reports/Research Report.docx]

filename = '/Users/jennifer/Desktop/Report'
word_text = [`filename`.docx]
filename = 'Research Report'
word_text = [`filename`.docx]

将文本内容读入变量后,可以使用Tagui的函数来处理它,例如 get_text() 和 del_chars(),以获得RPA流程所需的特定信息。标准JavaScript函数也可用于进行字符串处理,可以 Google 搜索 javascript how to xxxx。 从 Word 读取文本内容后,TagUI 将关闭 Microsoft Word 并继续执行接下去的流程。

PDF

只需要将文件名分配给变量,就可以将PDF文件的文本内容赋值给变量。TagUI 将自动执行 PDF Viewer 应用程序以复制文本内容并分配给变量。在 Windows 系统, 需要安装 Adobe Acrobat Reader,并且设置为打开pdf的默认程序。在Mac 系统, TagUI 使用可以查看PDF文件的默认预览应用程序。

Windows 设置pdf文件路径举例:

1
2
3
4
5
6
7
8
pdf_text = [Research Report.pdf]
pdf_text = [C:\Users\Jennifer\Desktop\Report.pdf]
pdf_text = [FY2021 Reports\Research Report.pdf]

filename = 'C:\\Users\\Jennifer\\Desktop\\Report'
pdf_text = [`filename`.pdf]
filename = 'Research Report'
pdf_text = [`filename`.pdf]

Mac 设置pdf文件路径举例:

1
2
3
4
5
6
7
8
pdf_text = [Research Report.pdf]
pdf_text = [/Users/jennifer/Desktop/Report.pdf]
pdf_text = [FY2021 Reports/Research Report.pdf]

filename = '/Users/jennifer/Desktop/Report'
pdf_text = [`filename`.pdf]
filename = 'Research Report'
pdf_text = [`filename`.pdf]

将文本内容读入变量后,可以使用 Tagui 的函数 get_text() 和 del_chars() 来获得RPA流程所需的特定信息。标准JavaScript函数也可用于进行字符串处理,具体可以 Google 搜索javascript how to xxxx。从PDF文件读取文本内容后,TagUI将关闭PDF查看器并继续使用其余自动化步骤。

Using variables 使用变量

read 读取目标内容放入变量

获取一些文本或值并将其存储在变量中。

可以使用 DOM, XPath, Region, Image 进行目标定位。

1
read [DOM/XPath/Region/Image] to [variable]

当提供区域Region 或 图像Image 元素特征时,Tagui 会使用OCR从屏幕中读取字符。

例子:

1
2
3
4
5
6
7
read //p[@id="address"] to address

read //p[@id="address"]/@class to address-class

read (500,200)-(600,400) to id-number

read frame.png to email
变量赋值

将文本保存到变量。

1
[variable] = [value]

在值中使用文本时,请围绕引号中的文本,如 “某些文本”。这使用 JavaScript 的规则,因此可以将数字分配给变量或使用其他 JavaScript 函数。变量名称需要是一个单词,不能以数字开头。

例子:

1
2
3
count = 5
username = "johncleese"
fullname = firstname + lastname

File saving/loading 文件保存和读取

dump 文本保存到文件

将文本保存到新文件,例如把一个文本变量,保存到一个txt里。

1
2
3
4
dump [text] to [filename]
dump [`variable`] to [filename]
// creates blank CSV file with header
dump First Name,Last Name to names.csv
write 追加写入

将新的文本保存到现有文件中。

1
2
write [text] to [filename]
write [`variable`] to [filename]

例子:

1
2
write firstname,lastname to names.csv
write `fullreport` to report.txt
load 读取

将文件内容加载到变量。

1
load [filename] to [variable]

例子:

1
load report.txt to report
snap 截屏

屏幕截图功能,可以是全屏、某个元素或区域。

可以使用 DOM, XPath, Region, Image 进行目标定位。

1
snap [DOM/XPath/Region/Image/page] to [filename]

如果使用 page 定位目标,会把整个网页进行截图。

例子:

1
2
3
snap logo to logo.png

snap page to webpage.png

显示输出

echo 信息输出

在命令行上显示输出内容,比如显示变量。

1
2
echo [text]
echo [`variable`]

例子:

1
2
echo Flow has started
echo The user is `username`
show 显示元素文本

在命令行上直接显示元素文本。

可以用 DOM, XPath 进行目标定位。

1
show [DOM/XPath]

例子:

1
show review-text
check 根据条件显示文本

基于条件显示不同文本信息。

1
check [条件] | [结果为 true 的文本] | [结果为 false 的文本]

例子:

1
check header_home_text equals to "Home" | "header text is correct" | "header text is wrong"

Custom code 自定义代码

JavaScript

运行 JavaScript 代码。TagUI 直接访问 JavaScript 变量。

TagUI 可以“智能”判断以下 3 种情况使用,无需使用js或js begin/ js finish:

  1. 分配或改变变量 分配变量时,TagUI 可以检测=符号并自动将该行视为 JavaScript 代码。
  2. 以 ; 结尾:如果一行以 ; 字符结尾,并且该行无法匹配任何已知的 TagUI 命令,则将其视为 JavaScript 代码。
  3. 常见的JavaScript关键字开头:如果一行无法匹配任何已知的 TagUI 命令,并且该行以常见的JavaScript 关键字(例如 if、for、switch、else、while、case、break、continue 等)开头,它将自动被视为 JavaScript 代码。

jsjs beginjs finish方式使用 -

1
js 1-line JavaScript code
1
2
3
4
5
js begin
JavaScript code line 1
JavaScript code line 2
JavaScript code line 3
js finish

每当有一些 JavaScript 代码(除了 TagUI 步骤或辅助函数之外的任何代码)时,都需要上面的代码。然而,TagUI 可以“智能”地检测到以下 3 种使用 JavaScript 但js不需要的情况。

1
2
3
4
5
js [JavaScript statement]

js begin
[JavaScript statements]
js finish

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
js obj = JSON.parse(api_result)
dump `obj` to result.json

js begin
obj = JSON.parse(api_result)
randomInteger = Math.floor(Math.random() * Math.floor(5)) + 1
js finish
dump `obj` to result.json

// declare and initilise variable to use it inside/outside js code block
a = ""
js begin
a = "some string"
js finish
echo `a`

1. 分配或更改变量

当分配变量时,TagUI 可以检测符号=并自动将该行视为 JavaScript 代码,而无需用户显式使用jsjs begin/ js finish

1
name = "Johnny"

2. 以 ; 结尾的行特点

如果一行以;字符结尾,并且该行无法匹配任何已知的 TagUI 步骤,则将其视为 JavaScript 代码。

1
2
// below line quit TagUI
this.exit();

3. 常用JavaScript关键字

如果一行无法匹配任何已知的 TagUI 步骤,并且该行以常见的 JavaScript 关键字(例如 if、for、switch、else、while、case、break、continue 等)开头,它将自动被视为 JavaScript 代码,而无需使用js.

1
2
3
4
for n from 1 to 10
echo `n`
if n equals to 5
break
Python

运行Python代码并将stdout 保存到变量 py_result 作为字符串。

1
2
3
4
5
py [Python statement]

py begin
[Python statements]
py finish

例子:

1
2
3
4
5
6
7
8
9
10
py result = 2 + 3
py print(result)
echo `py_result`

py begin
import random
random_integer = random.randint(1,6)
print(random_integer)
py finish
echo `py_result`

有关运行Python代码的更多示例和使用模式查看高级命令

RUN

在命令提示符或终端中运行命令,并将 stdout 保存到变量 run_result

1
run [shell command]

例子:

1
run cmd /c mkdir new_directory
Sikuli

运行 Sikuli 代码,例如需要把OCR设置成中文

1
2
3
4
5
6
vision begin
import org.sikuli.script.TextRecognizer as TR
Settings.OcrReadText = True
Settings.OcrLanguage = "chi_sim"
TR.reset()
vision finish

例子:

1
vision click("button1.png")
DOM

在浏览器 DOM 中运行代码并将返回值保存到变量 dom_result

1
2
3
4
5
dom [JavaScript statement to run in the DOM]

dom begin
[JavaScript statements to run in the DOM]
dom finish

例子:

1
2
3
4
5
// goes back to previous page
dom window.history.back()

// returns text of an element
dom return document.querySelector('#some_id').textContent
R

运行 R 语句并将 stdout 保存到变量 r_result

1
2
3
4
5
r [R statement]

r begin
[R statements]
r finish

更多命令

wait 等待

等待一段时间,默认时间单位:秒。

1
2
3
wait [seconds to wait]
wait [seconds to wait] s
wait [seconds to wait] seconds

例子:

1
2
3
wait 5.5
wait 10 s
wait 20 seconds
timeout 设置等待超时

等待 Web 元素出现时,设置自动等待超时(默认为10秒)。

1
timeout [seconds to wait before timeout]

例子:

1
timeout 300
ask

提示用户输入,并将用户输入内容保存为变量 ask_result

1
ask [prompt]

例子:

1
2
ask What is the date of the receipt? (in DD-MM-YYYY)
type search as `ask_result`
live

一步步执行命令并立即看到输出。输入 “done” 退出Live模式。

1
live
tagui 调用流程

调用另一个 TagUI 流程,注意文件路径别写错。

1
2
tagui [flow file]
tagui [folder/flow file]

例子:

1
2
tagui update-forex.tag
tagui flows/update-forex.tag

// 添加注释

添加代码注释。在使用条件或循环命令是,注释也要相应缩进,以便在转换为JavaScript代码后正确运行。

1
// 这里写注释,不会被程序运行

例子:

1
// 点击登录按钮

Telegram

Telegram 是国外的一款聊天软件,中国使用人数极少。TagUI 通过发送 telegram 消息,及时获得机器人的工作结果或报错状态信息。国内一般都用 企业微信、钉钉等。

首先要获得 @taguibot 发消息授权,然后再用 TagUI 下面的命令:

1
telegram [id] [message]

例子:

1
2
3
4
5
6
7
8
9
10
11
// this line sends message to Telegram user with ID 1234567890, \n means a new line
telegram 1234567890 Hello Alena,\n\nYour HR onboarding bot has completed successfully.

// show telegram_result variable - 'success' means sent, 'fail' means sending failed
echo Telegram message - `telegram_result`

// if condition to check telegram_result 'success' or 'fail' and handle accordingly
if telegram_result equals to 'success'
echo Message sent successfully.
else
echo Message sending failed.

注意

电报步骤需要互联网连接。此功能托管在https://tebel.org 上,但如果希望在自己的云或服务器上托管此功能,则源代码 位于 GitHub 上。该实现是在纯 PHP 中实现的,没有任何依赖项。

记录的唯一信息是 chat_id、消息长度、日期时间戳(以防止滥用)。如果希望自行托管,请首先阅读此链接以了解有关 Telegram Bot API、创建的 bot API 令牌并设置 webhook 的更多信息 - https://core.telegram.org/bots

Run options 运行流程选项

可以使用 tagui 命令,查看选项说明。

举例:这条命令运行 my_flow.tag 而隐藏Web浏览器,同时把流程运行结果存储到 tagui_report.csv 中。

1
tagui my_flow.tag -headless -report
-deploy or -d 生产CMD快捷方式

创建一个可以双击运行流程的快捷方式。如果移动文件,则必须创建一个新的快捷方式。流程将在创建快捷方式时使用的所有选项运行。

-headless or -h 隐藏浏览器

运行时,隐藏 Chrome Web浏览器(隐藏浏览器就无法使用 Visual Automation)。

-nobrowser or -n 不使用Web浏览器

不使用Web浏览器,例如仅使用可视自动化执行自动化。

-report or -r 保存HTML日志

追踪流程运行结果,记录在tagui/src/tagui_report.csv 中,并保存流量执行的HTML日志。

-turbo or -t 十倍速运行

在10倍的速度下运行流程。谨慎使用!

-quiet or -q 减少非主动信息输出

除了 echo, show, check steps and errors etc 之外,不显示其他输出。在执行期间显示和隐藏输出的细粒度控制(例如,隐藏密码显示出来), 可以在流处里使用 quiet_mode = truequiet_mode = false 进行控制。

-edge or -e 使用Edge浏览器

使用 Microsoft Edge浏览器而不是Chrome运行(可与-headless选项一起使用)。

my_datatable.csv

使用指定的CSV文件作为批量自动化的DataTable。查看 datatables

input(s) 流程参数

添加自己的流程参数,在的流程中做为变量P1至P8使用。

例如在CMD里,运行 register_attendence.tag 流程,需要用 Edge 浏览器,同时向该流程输入4个变量(4个人名)。

1
tagui register_attendence.tag -edge Jenny Jason John Joanne

在流程里, 4个人名会自动分配给4个变量 p1, p2, p3, p4 。例如在需要输入不同数据时,就特别方便,下面的命令会显示出这4个变量,可以试试。

1
2
3
4
echo `p1`
echo `p2`
echo `p3`
echo `p4`

辅助函数

csv_row()

以数组方式写入CSV文件。

例子:

1
2
3
4
read name_element to name
read price_element to price
read details_element to details
write `csv_row([name, price, details])` to product_list.csv

count() 数量计算

获取符合指定元素特征的元素数,例如计算有多少个新闻标题,然后用for读取它们。请注意,元素特征需要单引号 ''

例子:

1
rows = count('table-rows')

clipboard() 剪贴板

将文本放在剪贴板上,或获取剪贴板文本。

例子:

1
2
3
4
5
clipboard('some text')
keyboard [ctrl]v

keyboard [ctrl]c
contents = clipboard()

url() 获取当前URL

获取当前网页的URL。

例子:

1
2
if url() contains 'success'
click button1

title() 获取当前网页标题。

获取当前网页的标题title。

例子:

1
2
if title() contains 'Confirmation'
click button1

text()

获取当前网页的所有文本内容。

例子:

1
2
if text() contains 'success'
click button1

timer()

获得一段命令执行的时间周期,时间单位:秒。

例子:

1
2
3
4
5
timer()
click button1
click button2
click button3
echo `timer()`

exist() 等待元素出现

等待元素出现,如果元素出现返回true ,如果元素等待时间超时,元素还没有出现,就返回 false,通常在网页搜索、查询等流程时使用本命令,以确定查询结果已经出现后,才继续下面的流程。请注意,元素特征包含在引号 ‘’ 内。

可以使用 DOM, XPath, Image 进行目标定位。

1
exist('[DOM/XPath/Image]')

例子:

1
2
if exist('//table')
click button1

present() 判断元素是否存在

判断元素是否存在,并且直接返回 truefalse

请注意,元素特征包含在单引号 ' 内。

可以使用DOM, XPath, Image 进行目标定位。

例子:

1
2
if present('//table')
click button1

mouse_xy()

获取当前鼠标位置的x,y坐标。

适合用在 live mode。

例子:

1
echo `mouse_xy()`

mouse_x()

获取当前鼠标位置的 x 坐标。

例子:

1
2
3
4
hover element.png
x = mouse_x() + 200
y = mouse_y()
click (`x`,`y`)

mouse_y()

获取当前鼠标位置的 y 坐标。

例子:

1
2
3
4
hover element.png
x = mouse_x() + 200
y = mouse_y()
click (`x`,`y`)

get_files()

获取文件或文件夹列表,支持相对和绝对路径。Returns an array of files and folders in a given folder. Both relative and absolute paths supported.

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// list of files in the same folder as the flow file
list = get_files('.')

// list of files in the Desktop folder of user Alan
// note double backslash because of JavaScript string
list = get_files('C:\\Users\\Alan\\Desktop')

// alternatively, use single forward slash instead
list = get_files('C:/Users/Alan/Desktop')

// showing the list of files after retrieving it
// JavaScript array start from 0 for 1st element
for n from 0 to list.length-1
echo `list[n]`

// checking to process a specific file extension
for n from 0 to list.length-1
if list[n] contains '.XLSX'
echo `list[n]`

get_text() 截取文本

从文本中提取2的锚点之间的文本。当有多个匹配结果时的可选第4参数(例如,3判断函数返回找到的第3匹配)。

例子:

1
2
3
4
5
6
7
pdf_text = 'Name: John State: Texas City: Plano Contact: ...'

name = get_text(pdf_text, 'Name:', 'State:')
state = get_text(pdf_text, 'State:', 'City:')
city = get_text(pdf_text, 'City:', 'Contact:')

echo `name`, `state`, `city`

del_chars() 删除文本

删除特征字符后的文本,并返回结果来清除数据。Cleans data by removing provided character(s) from given text and returning the result.

例子:

1
2
pdf_text = 'Name: John\n State: Texas\t City: Plano\n Contact: ...'
echo `del_chars(pdf_text, '\n\t:')`

get_env() 获得当前用户环境变量

从操作系统返回给定环境变量的值。例如:C:\Users\Administrator

例子:

1
2
3
4
5
6
7
// getting %USERPROFILE% variable for Windows
echo `get_env('USERPROFILE')`
home_dir = get_env('USERPROFILE')

// getting $HOME variable for Mac or Linux
echo `get_env('HOME')`
home_dir = get_env('HOME')

RPA for Python (TagUI 在 Python 里使用)

RPA for Python 是一个 Python 库 (安装方式:pip install rpa) 这个库可以使用 Python API 来调用 TagUI 执行自动化RPA操作。查看 这里 , RPA for Python 由 TagUI’s creator Ken Soh @kensoh 创建和维护。

TagUI 源代码的和依赖库

可以查看这些源代码,帮助这些项目的迭代及Bug修复,因为这些项目都有大量用户在使用。

示例代码块

第一个例子

TagUI 支持运行服务器上的.tag文件,试试直接输入下面命令,会打开百度进行简单点击操作。

1
tagui http://www.TagUI.com.cn/baidu.tag

把cmd设置成UTF-8

这样在CMD环境里,echo输出就可以正常显示简体中文。

1
2
// 把cmd设置成UTF-8
run cmd /c chcp 65001

字符串查找替换

字符串替换命令,TagUI字符串处理,请参考 JS 语法

1
2
3
//字符串查找替换
txt="http://baidu.com"
txt=txt.replace("baidu","kkyyww")

查找字符串目标文字位置

,参考JS语法

1
2
3
//查找字符串目标文字位置
字符位置=txt.lastIndexOf("du.")
echo `字符位置`

下载图片

下载图片需要用curl.exe这个命令,百度 curl 具体了解。

1
2
// 下载图片
run curl -k -s -L -o c:/aaa.png http://www.bbb.com/ccc.jpg

download 命令的使用例子

download命令下载视频

1
2
3
4
https://www.videvo.net/video/apollo-command-and-service-module-separation/8/
download to C:\Users\Administrator\Documents\TagUI\TCvideo\v
click //*[@id="download-button"]
wait 10

API 例子

调用有道API翻译,初学者可以看看这里的数组处理方式

1
2
3
4
5
// 用API翻译
api http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=i love you
中文词 = JSON.parse(api_result)
中文词 = 中文词["translateResult"][0][0]["tgt"]
echo `中文词`

抓取百度首页新闻标题

循环抓取 XPATH 的例子

1
2
3
4
5
6
7
// 抓取百度首页新闻标题
http://baidu.com
新闻总数量 = count('/html/body/div[1]/div[1]/div[5]/div/div/div[3]/ul/li[*]/a/span[2]')
echo `新闻总数量`
for i from 1 to 新闻总数量
read /html/body/div[1]/div[1]/div[5]/div/div/div[3]/ul/li[`i`]/a/span[2] to 标题
echo `标题`

判断目录内是否包含指定扩展名文件

判断目录内是否包含指定扩展名文件,可用于判断下载是否完成

1
2
3
4
5
// 判断目录内是否包含指定扩展名文件,可用于判断下载是否完成
list = get_files('C:\\Users\\Administrator\\Documents\\TagUI\\TCvideo\\v\\视频翻译\\')
指定扩展名="mp4"
echo `list[1].indexOf(指定扩展名)`
echo `字符位置`

判断chrome是否下载完成

判断chrome是否下载完成

1
2
3
4
5
6
7
8
9
10
11
12
// 判断chrome是否下载完成
https://www.videvo.net/video/8//
wait 3
click download-button
wait 3
for n from 1 to 100
echo `present('mb.png')`
if present('mb.png')
wait 3
else
echo 下载完成
break

读取excel,写入txt

读取excel,写入txt

1
2
3
4
5
//读excel
data_array = [1.xlsx]sheet1!A1:B3
echo `data_array`
dump `data_array` to 0.txt
wait 5

打开变量里的URL

下面2种方法都可以,推荐用第二种

1
2
3
4
5
6
7
8
//打开变量里的URL
url = 'https://baidu.com'
https://`url.split('//')[1]`


//打开变量里的URL,推荐用这种方式,简单点
url = 'baidu.com'
https://`url`

环境初始化

杀死TagUI相关进程,包括chrome,避免上一个tag没完成或卡主,影响当前tag运行

1
2
// 环境初始化,杀死TagUI相关进程,包括chrome
run cmd /c d:/tagui/src/end_processes.cmd

获得本机名

获得本地Windows计算机名

1
2
3
4
//获得本机名
run cmd /c hostname
pcname=run_result
echo `pcname`
  • 标题: TagUI教程
  • 作者: Yiuhang Chan
  • 创建于 : 2024-04-18 11:39:15
  • 更新于 : 2024-04-19 10:52:06
  • 链接: https://www.yiuhangblog.com/2024/04/18/20240418TagUI教程/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
TagUI教程