- 概述
- 用户界面自动化
- 通过用户界面自动化实现自动化的应用程序和技术
- 项目兼容性
- UI-ANA-016 - 拉取打开浏览器 URL
- UI-ANA-017 - 出错时继续 True
- UI-ANA-018 - 列出 OCR/图像活动
- UI-DBP-006 - 容器使用情况
- UI-DBP-013 - Excel 自动化误用
- UI-DBP-030 - 选取器中的禁止变量使用情况
- UI-PRR-001 - 模拟单击
- UI-PRR-002 - 模拟键入
- UI-PRR-003 - 打开应用程序误用
- UI-PRR-004 - 硬编码延迟
- UI-REL-001 - 选取器中的大 IDX
- UI-SEC-004 - 选取器电子邮件数据
- UI-SEC-010 - 应用程序/Url 限制
- UI-USG-011 - 不允许的属性
- UX-SEC-010 - 应用程序/Url 限制
- UX-DBP-029 - 使用不安全的密码
- UI-PST-001 - 项目设置中的审核日志级别
- UiPath 浏览器迁移工具
- 剪切区域
- 计算机视觉录制器
- Activities index
- 激活
- 锚点基准
- 附加浏览器
- 附加窗口
- 阻止用户输入
- 标注
- 选中
- 单击
- 单击图像
- 单击图像触发器
- 单击 OCR 文本
- 单击文本
- 单击触发器
- 关闭应用程序
- 关闭选项卡
- 关闭窗口
- 上下文感知锚点
- 复制选定文本
- 元素属性更改触发器
- 存在元素
- 元素作用域
- 元素状态更改触发器
- 导出用户界面树
- 提取结构化数据
- 查找子元素
- 查找元素
- 查找图像
- 查找图像匹配项
- 查找 OCR 文本位置
- 查找相对元素
- 查找文本位置
- 获取活动窗口
- 获取上级
- 获取属性
- 获取事件信息
- 从剪贴板获取
- 获取全文
- 获取 OCR 文本
- 获取密码
- 获取位置
- 获取源元素
- 获取文本
- 获取可见文本
- 返回
- 前往
- 转至主页
- Google Cloud Vision OCR
- 隐藏窗口
- 高亮显示
- 热键触发器
- 悬停
- 悬停在图像上方
- 悬停在 OCR 文本上方
- 悬停文本
- 存在图像
- 在屏幕上指定
- 注入 .NET 代码
- 插入 Js 脚本
- 调用 ActiveX 方法
- 按键触发器
- 加载图像
- 最大化窗口
- Microsoft Azure 计算机视觉 OCR
- Microsoft OCR
- Microsoft Project Oxford Online OCR
- 最小化窗口
- 监控事件
- 鼠标触发器
- 移动窗口
- 导航至
- 存在 OCR 文本
- 在元素出现时
- 在元素消失时
- 在图像出现时
- 在图像消失时
- 打开应用程序
- 打开浏览器
- 刷新浏览器
- 重播用户事件
- 还原窗口
- 保存图像
- 选择项目
- 选择多个项目
- 发送热键
- 设置剪切区域
- 设置焦点
- 设置文本
- 设置为剪贴板
- 设置网页属性
- 显示窗口
- 启动进程
- 系统触发器
- 截取屏幕截图
- Tesseract OCR
- 存在文本
- 工具提示
- 键入
- 输入安全文本
- 使用前台
- 等待属性
- 等待元素消失
- 等待图像消失
- Computer Vision Local Server
- 移动自动化
- 终端
用户界面自动化活动
将移动自动化用于手机银行应用程序
在本教程中,我们将探索如何使用“移动自动化”包自动执行移动银行应用程序中的任务。本教程使用美国银行 (Bank of America) 提供的手机银行模拟器和 Sauce Labs 的 Google Pixel 模拟器。我们将专注于自动化和测试以下操作:
- 登录到应用程序。
- 实施借记卡锁定。
- 查看声明并截取屏幕截图。
本教程将介绍如何使用活动和 API 来自动化这些场景。
- 将 Sauce Labs 中的设备添加到 MDM 中。
有关添加设备的更多信息,请访问添加 Sauce Labs 设备。
- 将美国银行手机银行模拟器添加到 MDM 中。
有关添加应用程序的更多信息,请访问添加应用程序。
要按照步骤自行尝试本教程,请查看以下示例项目:手机银行模拟器。
在此示例中,我们使用对象存储库元素作为活动的输入用户界面元素。要创建移动设备的用户界面元素,请在移动设备管理器 (MDM) 中的目标设备和应用程序之间建立连接。然后,直接在“对象存储库”面板中创建每个元素,并使用“指示元素”来指定 MDM 设备上的特定用户界面元素。
为轻松学习本教程,请查看以下列表以了解对象存储库结构:
- 美国银行应用程序,移动屏幕菜单
- backFromClaimDetails
- backFromClaimStatus
- BackToMenu
- firstClaimSeeDetails
- Lock
- LockCard
- Login
- ManageDebitCredit
- 菜单
- 密码
- swipeMenu
- 用户 ID
- viewmyclaims
- 在设备和应用程序之间建立连接:
- 添加“移动设备连接”活动。
- 使用“选择连接详细信息”连接先前创建的移动设备和应用程序。
- 登录到移动应用程序:
- 添加“点击”活动以选择“用户 ID”字段,以便输入用户名。
- 添加“设置文本”活动,以便在“用户 ID ”字段中输入用户名。
- 添加“点击”活动以选择“密码”字段,以便您输入密码。
- 添加“设置文本”活动以输入相应的密码。
- 使用“点击”活动选择“登录”按钮。
图 1. 登录到应用程序后执行的第一个活动
- 锁定借记卡或信用卡:
- 添加“点击”活动以导航至手机银行应用程序菜单。
- 添加“滑动”活动以在菜单中向下滑动。
您需要一直滑动到“管理借记卡/信用卡”部分。
- 添加“点击”活动以选择“管理借记卡/信用卡”部分。
- 添加“点击”活动,为显示的第一张卡选择“锁定”图标。
- 添加“滑动”活动,在锁定卡通知中向下滑动。
此操作允许您通过选择“锁定卡”来确认操作。
- 添加一个“点击”活动来选择“锁定卡”。
图 2. 用于锁定借记卡的活动
- 截取声明的屏幕截图:
- 添加“点击”活动以选择“后退”按钮,然后返回到主菜单。
- 添加“滑动”活动以在主菜单中向下滑动,直到出现“查看我的声明”部分。
- 使用“点击”活动选择“查看我的声明”部分。
- 添加“点击”活动,选择第一个声明的“查看详细信息”。
- 使用 TakeScreenshot API 截取第一个声明详细信息的屏幕截图。
图 3. 用于截取声明屏幕截图的活动
- 最后,截取屏幕截图后,我们使用“点击”活动选择两次“返回用户界面”元素,返回到应用程序的主菜单。
要使用 API 自动化移动应用程序,请在项目的对象存储库中记录应用程序移动元素。在此示例中,我们使用通用移动屏幕创建了美国银行应用程序,其中包含我们用于自动化的所有用户界面元素。要创建移动设备的用户界面元素,请在移动设备管理器 (MDM) 中的目标设备和应用程序之间建立连接。然后,直接在“对象存储库”面板中创建每个元素,并使用“指示元素”来指定 MDM 设备上的特定用户界面元素。
查看以下列表以了解对象存储库的结构:
- 美国银行应用程序,移动屏幕菜单
- backFromClaimDetails
- backFromClaimStatus
- BackToMenu
- firstClaimSeeDetails
- Lock
- LockCard
- Login
- ManageDebitCredit
- 菜单
- 密码
- swipeMenu
- 用户 ID
- viewmyclaims
- 在设备和应用程序之间建立连接:
- 使用 Connect API 和第二个重载版本创建一个
Connection
类型的变量。对于此重载,请以字符串形式输入设备名称和应用程序名称,以建立连接。
[TestCase] public void Execute() { Connection connection = mobile.Connect( "Android mobile device", "BankOfAmericaSimulator"); Log("Connection established");
[TestCase] public void Execute() { Connection connection = mobile.Connect( "Android mobile device", "BankOfAmericaSimulator"); Log("Connection established");
- 使用 Connect API 和第二个重载版本创建一个
- (可选)出于调试目的,您可以在连接后添加
Log
消息。 - 登录到移动应用程序:
- 调用 Tap API 以单击“用户 ID ”字段。
此操作允许您输入用户名。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId); - 使用 SetText API 在“用户 ID”字段中输入
用户名。
connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId, "john.doe@uipath.com", MobileOptions.SetText().WithSendNewline(false));
connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.UserId, "john.doe@uipath.com", MobileOptions.SetText().WithSendNewline(false)); - 调用 Tap API 以
选择“密码”字段,以便输入
密码。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password); - 使用 Set Text API 在“密码”字段中输入密码。
WithSendNewLine(false)
方法可确保发送文本后不会在移动设备上按下“确定”键盘元素。有关 Set TextAPI 的可用选项的更多信息,请访问 MobileOptions.SetTextOptions 类。connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password, "abcde", MobileOptions.SetText().WithSendNewline(false));
connection.SetText(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Password, "abcde", MobileOptions.SetText().WithSendNewline(false)); - 使用 Tap API
选择
“登录”。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Login);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Login);
- 调用 Tap API 以单击“用户 ID ”字段。
- 锁定借记卡或信用卡:
- 使用 Tap API 导航到手机银行应用程序的
菜单:
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Menu);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Menu); - 使用 Swipe API 在菜单中向下滑动。
您需要一直滑动到“管理借记卡/信用卡”部分。
connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, SwipeDirection.Down, 4);
connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, SwipeDirection.Down, 4); - 使用 Tap API 选择“管理借记卡/信用卡”部分。
WithTimeout()
方法使 API 可以暂停预定的秒数。此暂停将持续到出现目标用户界面元素或引发错误为止。connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, TapTypeEnum.Single, MobileOptions.Tap().WithTimeout(120));
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.ManageDebitCredit, TapTypeEnum.Single, MobileOptions.Tap().WithTimeout(120)); - 对于显示的第一张
卡,使用 Tap API 选择锁定
图标。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Lock);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.Lock); - 使用 Directional Swipe API
在锁定卡通知中向下滑动,
这样我们就可以通过选择“锁定卡”来确认
操作。
connection.DirectionalSwipe(SwipeDirection.Down);
connection.DirectionalSwipe(SwipeDirection.Down); - 使用 Tap API 选择
“锁定卡”。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.LockCard);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.LockCard);
- 使用 Tap API 导航到手机银行应用程序的
菜单:
- 截取声明的屏幕截图。
- 使用 Tap API
和“后退”图标返回
主菜单。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.BackToMenu);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.BackToMenu); - 在主菜单中向下滑动,直到出现“查看我的声明”部分。
对于此步骤,我们使用 Swipe API,这次使用第六个重载。此重载需要滑动容器的
IElementDescriptor
,以及目标用户界面元素的SelectorTarget
。我们首先为“查看我的声明”部分创建SelectorTarget
,然后使用 Swipe API。- 打开 MDM 并创建移动设备和应用程序之间的连接。
- 转到对象存储库,并为移动屏幕创建一个新元素。
- 选择“指明元素”。
- 从“选择选项”菜单中,复制选取器标识的网页控件。
对于此手机银行应用程序,您必须确保将“WebView 选取器作为原生选取器”选为选择选项。
- 返回到代码
编辑器,然后创建一个类型为
SelectorTarget
的 变量。使用MobileTarget.FromSelector
方法,该方法 需要您先前复制的网页控件作为 参数。SelectorTarget viewMyClaimsTarget = MobileTarget.FromSelector("<mbl android:className='android.widget.TextView' text='View My Claims' />");
SelectorTarget viewMyClaimsTarget = MobileTarget.FromSelector("<mbl android:className='android.widget.TextView' text='View My Claims' />"); - 将 Swipe
API 与
SelectorTarget
变量 结合使用以完成向下滑动 操作。connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, viewMyClaimsTarget, SwipeDirection.Down, 20);
connection.Swipe(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.swipeMenu, viewMyClaimsTarget, SwipeDirection.Down, 20);
- 点击“查看我的
声明”
部分。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.viewmyclaims);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.viewmyclaims); - 点击第一个
声明的“查看详细
信息”。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.firstClaimSeeDetails);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.firstClaimSeeDetails); - 使用 TakeScreenshot API 截取第一个声明详细信息的
屏幕截图。
connection.TakeScreenshot();
connection.TakeScreenshot();
- 使用 Tap API
和“后退”图标返回
主菜单。
- 最后,截取屏幕截图后,我们通过
点击“返回用户界面”元素两次,返回到应用程序的
主菜单。
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimDetails); connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimStatus);
connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimDetails); connection.Tap(ObjectRepository.Descriptors.BankOfAmerica.MobileScreen.backFromClaimStatus);