You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Karate UI自动化测试中处理prompt弹窗

Karate UI 处理登录页自动弹出prompt认证的方案

Karate UI 完全支持处理这类场景,你只需要根据弹窗的类型选择对应的处理方式即可:

场景1:弹窗是页面JS触发的普通prompt框

如果是页面加载完成后前端JS代码主动弹出的prompt,你只需要在访问页面前提前配置弹窗处理规则即可,不要等页面加载完成后再配置,否则会因为弹窗已经弹出导致超时。
示例代码:

# 提前配置对应prompt的输入值,支持按顺序匹配多个连续弹出的prompt
* dialog({ prompt: '你的测试用户名' })
* dialog({ prompt: '你的测试密码' })
# 配置完成后再访问目标页面,弹窗触发后会自动匹配规则完成输入
* driver 'https://你的站点登录页地址'
# 后续可正常执行页面元素操作

如果你需要校验弹窗的提示文本,可以用以下写法:

* dialog() == '请输入用户名'
* dialog('测试用户名')
* dialog() == '请输入密码'
* dialog('测试密码')
* driver 'https://你的站点登录页地址'

场景2:弹窗是HTTP Basic Auth原生认证框

很多人会把HTTP基础认证的原生弹窗和JS的prompt搞混,这类弹窗不是前端JS生成的,无法用dialog API处理,你可以用两种方式处理:

  • 方式1:直接将认证信息拼接在访问URL中
    * driver 'https://<用户名>:<密码>@你的站点登录页地址'
    
  • 方式2:提前配置全局Basic Auth请求头
    # 生成Basic认证的头信息
    * def authBytes = '你的用户名:你的密码'.getBytes('UTF-8')
    * def basicAuth = 'Basic ' + Java.type('java.util.Base64').getEncoder().encodeToString(authBytes)
    * configure headers = { Authorization: '#(basicAuth)' }
    # 直接访问页面即可自动完成认证,不会再弹出认证框
    * driver 'https://你的站点登录页地址'
    

注意:以上两种方案都需要在调用driver访问页面前完成配置,配置顺序不要颠倒。
以上方法适用于Karate 1.0及以上所有正式版本。

内容的提问来源于stack exchange,提问作者Sid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:51:03