

很多人用影刀RPA开发网页自动化应用时,仍习惯把"浏览器类型"写死,自己用还好,一般不会有变动。但一旦你有其他更个性化的需求,或者要分享应用给别人用,问题就出来了。
【*其他平台首发的,个人习惯:防止其他人搬运,图片都加了水印,观感不佳(不影响核心信息展示),XDM多担待】

因为每个人的浏览器使用偏好不同,有的习惯用Edge,有的偏爱Chrome,还有的使用360浏览器。这样一来,这类"硬编码写死"的浏览器类型就成了瓶颈。
要让流程更通用,我们就需要考虑让应用支持"自定义选择浏览器"来执行任务。早些时候,影刀RPA还不支持"浏览器类型作为变量进行传递",如果直接用传统的If-Else 语句来判断浏览器类型,那么这部分流程会变得十分冗长。

但从今年3月的V5.25版本开始,影刀正式支持"通过变量动态配置浏览器选项"。这使得用户可以通过"字典键值对映射"的方法来实现。即:让“浏览器名称(显示文本)” 和 “浏览器类型(技术代码)”相互映射。
不同浏览器名称(键)、对应的浏览器类型(值),可以参考如下官方文档:

依赖“字典映射"这个底层原理,下面分享两种我实测好用的方案:
这是直接在流程中创建字典,通过"变量操作"查询匹配的一种方法。

指令详参配置如下:



这种方法是将“映射逻辑”封装到魔法指令代码中,你只需要把 dialog_result.浏览器类型作为入参传入,返回值就是浏览器类型的值。

from typing import *
try:
from xbot.app.logging import trace as print
except:
from xbot import print
def get_browser_code(browser_name):
"""
title: 获取浏览器mode值
description: 根据用户选择的浏览器名称 %browser_name%,返回对应的浏览器代码 %browser_code%。
inputs:
- browser_name (str): 浏览器名称,eg: "影刀浏览器"
outputs:
- browser_code (str): 浏览器mode,eg: "cef"
"""
# 检查输入有效性
if not isinstance(browser_name, str):
raise ValueError("浏览器名称必须为字符串类型")
def _get_browser_mapping():
"""
定义浏览器名称与代码的映射关系
"""
return {
'影刀浏览器': 'cef',
'Google Chrome浏览器': 'chrome',
'Microsoft Edge浏览器': 'edge',
'Internet Explorer浏览器': 'ie',
'360安全浏览器': '360se',
'Firefox浏览器': 'firefox',
'QQ浏览器': 'QQBrowser'
}
# 获取浏览器映射字典
browser_mapping = _get_browser_mapping()
# 检查浏览器名称是否存在
if browser_name not in browser_mapping:
available_browsers = ", ".join(browser_mapping.keys())
raise ValueError(f"不支持的浏览器类型: {browser_name}。支持的浏览器有: {available_browsers}")
# 返回对应的浏览器mode
return browser_mapping[browser_name]