如何使用Robot Framework打开并自动化VMware Horizon
可行解决方案
方案1:调整Chrome启动参数跳过弹窗(优先推荐)
该弹窗是Chrome的外部协议启动确认提示,无需操作桌面元素,直接在初始化WebDriver时添加配置即可自动跳过确认,直接启动VMware Horizon:
${chrome_options}= Evaluate sys.modules['selenium.webdriver'].ChromeOptions() sys, selenium.webdriver # 禁用vmware-horizon协议的启动确认弹窗 ${prefs} Create Dictionary protocol_handler.excluded_schemes.vmware-horizon=${False} protocol_handler.allowed_origin_protocol_pairs.*.vmware-horizon=${True} Call Method ${chrome_options} add_experimental_option prefs ${prefs} Create WebDriver Chrome executable_path=${driver_path_location} options=${chrome_options}
配置完成后点击云环境触发协议调用时,Chrome会直接拉起本地VMware Horizon客户端,不会再弹出确认窗。
方案2:精准定位Chrome协议弹窗操作
如果无法调整浏览器配置,用RPA.Windows库的控件定位能力替代坐标点击,避免点击失效:
- 先通过Windows系统自带的Inspect工具(Windows SDK内置,无需额外安装)获取弹窗的标题、按钮的自动化ID/名称属性
- 对应Robot Framework代码示例:
# 定位并激活Chrome的协议确认弹窗,弹窗标题一般为「打开 VMware Horizon?」 Control Window title=打开 VMware Horizon? # 直接点击按钮控件,无需依赖坐标 Click Control name:Open VMware Horizon
该方式直接调用Windows API操作控件,比模拟鼠标坐标点击稳定性高很多,不会因为窗口位置变化失效。
方案3:直接抓取协议链接拉起客户端(完全绕开弹窗)
触发弹窗的本质是页面调用了vmware-horizon://开头的专属协议链接,你可以直接抓取该链接,调用本地客户端启动,完全不需要和浏览器弹窗交互:
- 点击云环境按钮前开启Selenium的网络请求监听,或者直接获取按钮元素的
href属性拿到完整的vmware协议链接 - 用Robot Framework自带的OperatingSystem库直接调用本地VMware Horizon客户端打开链接:
# 假设你已经拿到协议链接存入${horizon_url}变量 Run "C:\\Program Files\\VMware\\VMware Horizon\\Client\\vmware-view.exe" ${horizon_url}
该方案完全绕开浏览器弹窗逻辑,稳定性最高,也不需要依赖任何桌面UI操作库的能力。
内容的提问来源于stack exchange,提问作者ChanJi
相关产品推荐
相关产品推荐

