一.Automa弹窗和元素选择器
1.元素选择器使用介绍
二.定位列表
1.点击元素定位器上的定位列表按钮,即可定位列表
2.css选择器的不同定位方式
2.1.CSS列表示在CSS版本的属性定义(CSS1,CSS2或对CSS3)
选择器 | 示例 | 示例说明 | CSS |
---|---|---|---|
.class | .intro | 选择所有class="intro"的元素 | 1 |
#id | #firstname | 选择所有id="firstname"的元素 | 1 |
* | * | 选择所有元素 | 2 |
element | p | 选择所有 元素 | 1 |
element,element | div,p | 选择所有
元素和
元素 | 1 |
element element | div p | 选择
元素内的所有
元素 | 1 |
element>element | div>p | 选择所有父级是
元素的
元素 | 2 |
element+element | div+p | 选择所有紧跟在
元素之后的第一个
元素 | 2 |
[attribute] | [target] | 选择所有带有target属性元素 | 2 |
[attribute=value] | [target=-blank] | 选择所有使用target="-blank"的元素 | 2 |
[attribute~=value] | [title~=flower] | 选择标题属性包含单词"flower"的所有元素 | 2 |
[attribute | =language] | [lang | =en] |
:link | a:link | 选择所有未访问链接 | 1 |
:visited | a:visited | 选择所有访问过的链接 | 1 |
:active | a:active | 选择活动链接 | 1 |
:hover | a:hover | 选择鼠标在链接上面时 | 1 |
:focus | input:focus | 选择具有焦点的输入元素 | 2 |
:first-letter | p:first-letter | 选择每一个 元素的第一个字母 | 1 |
:first-line | p:first-line | 选择每一个 元素的第一行 | 1 |
:first-child | p:first-child | 指定只有当 元素是其父级的第一个子级的样式 | 2 |
:before | p:before | 在每个 元素之前插入内容 | 2 |
:after | p:after | 在每个 元素之后插入内容 | 2 |
:lang(language) | p:lang(it) | 选择一个lang属性的起始值="it"的所有 元素 | 2 |
element1~element2 | p~ul | 选择p元素之后的每一个ul元素 | 3 |
[attribute^=value] | a[src^=“https”] | 选择每一个src属性的值以"https"开头的元素 | 3 |
[attribute$=value] | a[src$=“.pdf”] | 选择每一个src属性的值以".pdf"结尾的元素 | 3 |
[attribute*=value] | a[src*=“runoob”] | 选择每一个src属性的值包含子字符串"runoob"的元素 | 3 |
:first-of-type | p:first-of-type | 选择每个p元素是其父级的第一个p元素 | 3 |
:last-of-type | p:last-of-type | 选择每个p元素是其父级的最后一个p元素 | 3 |
:only-of-type | p:only-of-type | 选择每个p元素是其父级的唯一p元素 | 3 |
:only-child | p:only-child | 选择每个p元素是其父级的唯一子元素 | 3 |
:nth-child(n) | p:nth-child(2) | 选择每个p元素是其父级的第二个子元素 | 3 |
:nth-last-child(n) | p:nth-last-child(2) | 选择每个p元素的是其父级的第二个子元素,从最后一个子项计数 | 3 |
:nth-of-type(n) | p:nth-of-type(2) | 选择每个p元素是其父级的第二个p元素 | 3 |
:nth-last-of-type(n) | p:nth-last-of-type(2) | 选择每个p元素的是其父级的第二个p元素,从最后一个子项计数 | 3 |
:last-child | p:last-child | 选择每个p元素是其父级的最后一个子级。 | 3 |
:root | :root | 选择文档的根元素 | 3 |
:empty | p:empty | 选择每个没有任何子级的p元素(包括文本节点) | 3 |
:target | #news:target | 选择当前活动的#news元素(包含该锚名称的点击的URL) | 3 |
:enabled | input:enabled | 选择每一个已启用的输入元素 | 3 |
:disabled | input:disabled | 选择每一个禁用的输入元素 | 3 |
:checked | input:checked | 选择每个选中的输入元素 | 3 |
:not(selector) | :not§ | 选择每个并非p元素的元素 | 3 |
::selection | ::selection | 匹配元素中被用户选中或处于高亮状态的部分 | 3 |
:out-of-range | :out-of-range | 匹配值在指定区间之外的input元素 | 3 |
:in-range | :in-range | 匹配值在指定区间之内的input元素 | 3 |
:read-write | :read-write | 用于匹配可读及可写的元素 | 3 |
:read-only | :read-only | 用于匹配设置 “readonly”(只读) 属性的元素 | 3 |
:optional | :optional | 用于匹配可选的输入元素 | 3 |
:required | :required | 用于匹配设置了 “required” 属性的元素 | 3 |
:valid | :valid | 用于匹配输入值为合法的元素 | 3 |
:invalid | :invalid | 用于匹配输入值为非法的元素 | 3 |
三.Automa工作台
1.工作流:创建编辑工作流的工作台
1.1.直接新建
1.1.1.点击进件工作流按钮,创建空白工作流
1.2.导入
1.3.录制工作流
1.3.1.点击录制工作流,然后在浏览器上进行操作,Automa会记录操作步骤
1.3.2.录制完成后点击红色按钮停止录制,便会生成一个录制完成的工作流
1.3.3.录制出来的工作流并不能直接投入使用,需要通过手动调整细节之后才能正常运行
PS:通过录制功能创建的工作流往往不能直接使用,会有脚本运行过快、元素定位不准的问题
因此录制功能往往只能帮制定工作流框架,在录制完成后,需要通过调试工作流中的功能块,得到真正有用的工作流
2.定时任务:可以设置已有的工作流进行定时自动运行任务
2.1.制定任务
2.2.编辑和删除任务
2.2.1.点击定时任务进入工作流详情页,点击编辑触发器,就可以编辑定时任务设置
2.2.2.若要删除对应定时任务,在编辑触发器弹窗中删除所有除法条件,删完之后点击保存,即可删除定时任务
3.运行日志:可以查看各个工作流的运行情况,以及运行后存储的数据的具体内容
3.1.工作流运行信息
3.2.表格数据存储展示
3.3.已有自定义变量展示
4.设置
4.1.Automa语言修改成中文:设置-常规-语言,选中简体中文,然后重新打开工作台
四.Automa工作视图
1.表格:存储数据的表格,一般将工作流运行过程中获取到的数据存在表格中,可以定义表格的字段与字段属性
1.1.列的添加与编辑:点击工作视图右上角的表格按钮可以编辑表格的列的数量和属性
1.2.表格数据的添加
1.2.1.获取数据功能块和属性值功能块的编辑页面有“插入表格”复选框
1.2.2.可以向表格内加入数据,数据会加入到表格该列的最后一行
1.3.表格数据的引用
获取第1行、列为name的值。语法:{{ table.0.name }}
获取第2行、列为name的值。语法:{{ table.1.name }}
获取最后一行、列为name的值。语法:{{ table.$last.name }}
2.变量
2.1.直接定义自定义变量
2.1.1.使用插入数据功能块定义自定义变量,变量名可以为中文或者英文
2.1.2.变量值可以为字符串、数字和json格式数据,定义完成之后后续的功能块便可以使用此处定义的自定义变量
2.2.通过从浏览器中获取数据,赋值给自定义变量
2.3.全局变量:全局变量的定义遵循json格式
3.变量的引用方式
3.1.各种不同类型变量的引用
3.1.1.引用方式:{{关键字.变量名}}
3.2.各种格式的值的引用方式
3.2.1.举例:引用全局变量的各种值
{
"firstname": "Amina",
"lastname": "Ferry",
"phone": 2347613906692,
"gender": "female",
"hobbies": ["cooking", "hiking", "camping"],
"address": {
"street": "540 Harris Track Suite 904",
"streetName": "Edd Alley",
"buildingNumber": "1135",
"city": "North Kayleigh",
"zipcode": "75882-2791",
"country": "Guadeloupe"
}
}
a.获取字符串属性的值firstName
语法:{{ globalData.firstName }}或{{ globalData@firstName }}输出:Amina
b.获取数字属性的值phone
语法:{{ globalData.phone }}或{{ globalData@phone }}输出:2347613906692
c.获取对象address属性的值street
语法:{{ globalData.adress.street }}或{{ globalData@adress.street }}输出:540 Harris Track Suite 904
d.获取数组hobbies的整个列表
语法:{{ globalData.hobbies }}或{{ globalData@hobbies }}输出:["cooking", "hiking", "camping"]
e.获取数组hobbies的第一个索引值
语法:{{ globalData.hobbies.0 }}或{{ globalData@hobbies.0 }}输出:cooking
f.获取数组hobbies的第二个索引值
语法:{{ globalData.hobbies.1 }}或{{ globalData@hobbies.1 }}输出:hiking
g.如果需要引用别的来源的值,只需要将全局变量关键字globalData替换成别的来源的关键字便可
4.Automa自带函数变量
4.1.Automa自带内置函数,可以通过调用内置函数来获取对应的信息变量
4.2.函数名称始终以美元符号 ($) 开头,调用方法:{{$func()}}
4.3.日期
// 获取当前时间
$date("DD MMMM YYYY") // 14 January 2022
$date("DD-MM-YYYY, hh:mm A") // 14-01-2022, 02:24 PM
$date("relative") // A few seconds ago
$date("timestamp") // 1651118110948
// 时间格式转化
$date("2005-06-07", "DD MMMM YYYY") // 07 June 2005
$date("1977-04-01T14:00:30", "DD-MM-YYYY, hh:mm A") // 01-04-1977, 02:00 PM
$date("14 January 2021", "relative") // A year ago
$date("14 January 2021", "timestamp") // 1610553600000
4.4.随机数
// 随机数
$randint() // 30
$randint() // 14
// 带范围的随机数
$randint(0, 10) // 4
$randint(0, 10) // 7
4.5.生成随机数据
4.5.1.传递适当参数就可以生成一个随机字符串
4.5.2.例如,$randData("?l")将生成一个随机的小写字母,如a
4.5.3.支持的表达式
● ?l: 小写
● ?u:大写
● ?d: 数字
● ?f: 大写 + 小写
● ?s: 象征
● ?m:大写字母+数字
● ?n:小写字母 + 数字
● ?a: 任何
$randData("?d?d") // 89
$randData("?l?l?l?d?d@gmail.com") // wal29@gmail.com
$randData("?d?u?s?l?l?s?a?m") // 4C%ee^MF9
4.6.获取字符串或数组长度
// 获取字符串的长度
$getLength("testing") // 7
// 获取全局变量中数组hobbies的长度
$getLength([globalData.hobbies]) // 3
4.7.乘法运算
// 两个数字相乘
$multiply(5, 2) // 10
// 带自定义变量的乘法
// 定义 variables.num = 5
$multiply([variables.num], 0.3) //1.5
4.8.除法运算
$divide(22, 7) // 3.142857142857143
// 定义 variables.num = 5
$divide([variables.num], 0.3) // 16.666666666666668
4.9.加法运算
$increment(10, 2) // 12
// 定义 variables.num = 5
$increment([variables.num], 0.3) // 5.3
4.10.减法运算
$subtract(80, 7) // 73
// 定义 variables.num = 5
$subtract([variables.num], 0.3) // 4.7
4.11.除法的余数
$modulo(13, 5) // 3
$modulo(-13, 5) // -3
$modulo(4, 2) // 0
$modulo(-4, 2) // -0
// 定义 variables.num = 5
$modulo([variables.num], 2) // 1
4.12.字符串替换
$replace("hello world!", "world", "everyone") // hello everyone!
// 定义 variables.firstname = "Amina"
{{$replace("hello world!", "world", [variables.firstname])}} // hello Amina!
4.13.字母大写转化成小写
$toLowerCase("HELLO WORLD!") // hello world!
$toLowerCase("hELLO wORLD!") // hello world!
// 定义 variables.firstname = "Amina"
$toLowerCase([variables.firstname]) // amina
4.14.字母小写转化成大写
$toUpperCase("hello world!") // HELLO WORLD!
$toUpperCase("hELLO wORLD!") // HELLO WORLD!
// 定义 variables.firstname = "Amina"
$toUpperCase([variables.firstname]) // AMINA
5.条件(if)
5.1.Automa内的条件功能相当于代码中的if条件,通过条件功能块实现
5.2.判断方式:从上到下依次对每个条件路径进行判断,如果与条件匹配,工作流将继续到与条件输出连接的块
5.2.1.如果没有匹配,工作流程将继续到与后备输出连接的块
5.3.条件路径的编辑:每个条件路径可以由多个判断组合而成,每个判断之间又由AND或者OR判断链接
6.循环
6.1.循环数据:循环数据功能块能定义各种列表数据,并在循环中进行使用
6.2.循环表格:在循环数据功能块中选择表格
从索引开始:第一个遍历的下标
要循环的最大数据:0表示循环全部数据,其他数据表示从第一个下标开始往后遍历n个下标
举例:
从索引开始:5
要循环的最大数据:0
遍历的下标:[0,4]
引用方法:
a.获取遍历到该行的全部信息。语法:{{loopData.循环标识}}输出:{"字段1":"值1","字段2":"值2",……}
b.获取遍历到该行的某个字段的信息。语法:{{loopData.循环标识.字段名称}}输出:"字段值"
7.循环数字:在循环数据功能块中选择数字
引用方法:
获取遍历到数字。语法:{{loopData.循环标识}}输出:数字
8.循环变量:在循环数据功能块中选择变量
8.1.循环的变量一定要是列表类型的数据,否则会报错
引用方法:
a.获取遍历的全部信息。语法:{{loopData.循环标识}}输出:遍历到的完整数据
b.若遍历到数据是个字典,获取遍历到字典的某个字段的信息。语法:{{loopData.循环标识.字段名称}}输出:"字段值"
9.循环自定义数据:在循环数据功能块中选择自定义数据
9.1.在插入数据中进行循环数据的定义,数据类型必须为列表,可导入类型为excel的文件
引用方法:
a.获取遍历的全部信息。语法:{{loopData.循环标识}}输出:遍历到的完整数据
b.若遍历到数据是个字典,获取遍历到字典的某个字段的信息。语法:{{loopData.循环标识.字段名称}}输出:"字段值"
10.循环元素
循环元素功能块能遍历列表中每个元素的路径信息
能在定位到一个列表时就能循环列表中的每个节点
并且获取每个节点的具体CSS路径,在循环中使用
10.1.获取列表的CSS位置,填入循环元素的元素选择器输入框中
10.2.定位列表中每个节点中需要操作的元素的位置,将元素前半部分的列表部分替换成循环数据
10.2.1.在操作功能块中输入替换后的CSS定位信息
引用方法:
语法:{{loopData.循环标识}}输出:遍历到的节点的CSS定位信息
//列表位置
.container-bg_lQ801 > div:nth-child(2) > div
//元素位置
.container-bg_lQ801 > div:nth-child(2) > div div.c-single-text-ellipsis
//替换后的元素CSS定位信息
{{loopData.0ZgbC0}} div.c-single-text-ellipsis
10.2.2.最后设置循环断点
11.自动对齐
11.1.点击自动对齐,可以吧凌乱的功能块排成一排