如何在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
相关产品推荐
相关产品推荐

