基于Playwright的Salesforce UI自动化:MFA相关技术挑战问询
Salesforce 2GP托管包UI自动化MFA瓶颈解决方案
针对验证码限制与读取问题的解决办法
测试用户免MFA或TOTP密钥生成验证码:
沙盒环境下,可给自动化测试专用用户配置IP范围或用户组级别的MFA豁免(在Setup的Identity Verification Settings里操作)。如果必须用MFA,提前导出用户的TOTP密钥,用TOTP库直接生成验证码,比如Python的pyotp:import pyotp totp = pyotp.TOTP("测试用户的TOTP密钥") current_code = totp.now()这样既不用手动取验证码,也能绕过每小时5次的限制。
修复API会话注入失效问题:
直接塞Cookie/localStorage没用,是因为会话上下文不完整。正确步骤:- 用授权过的访问令牌调用
/services/data/vXX.X/sessionsAPI,拿到完整的会话ID(sid)、实例域名等信息。 - Playwright里先导航到Salesforce的首页(比如
{instance_url}/home/home.jsp),再添加Cookie:await context.addCookies([{ name: 'sid', value: '获取到的sid', domain: new URL(instance_url).hostname, path: '/', secure: true, httpOnly: true }]); - 还要检查
localStorage里的sfdc.userId等标识是否正确设置,部分页面依赖这些判断登录状态。另外要保证Playwright运行的IP和API调用的IP一致,不然会话会被强制踢掉。
- 用授权过的访问令牌调用
额外优化建议
- 用Salesforce专用UI测试工具:
可以试试官方的Selenium集成方案或者salesforce-ui-testing-library,这些工具内置了MFA登录的处理逻辑,不用自己折腾会话。 - 多用户并行测试:
创建多个测试账号,每个分配独立的TOTP密钥,分散验证码请求,同时用Playwright的并行运行能力提升效率。
内容的提问来源于stack exchange,提问作者prakhar Dixit
相关产品推荐
相关产品推荐

