一般是网站的反机器人机制拦截的。
首先你要去掉你 webdriver 的签名,再者是补全你浏览器的身份信息。
你可以参考这篇文章,https://www.cnblogs.com/zihkj/p/12583657.html。
当然你需要做的可能不止是这些,反反爬是相对繁琐。
可以用参数化构建,动态配置要执行的 shell 命令。类似让你同事在一个下拉列表里选择要执行的模块,构建的时候再由 Jenkins 拼接成要执行的命令行。
楼上的答案都是正解,如果都做了还是未能调用成功的话,应该把调用后的报错内容发出来看看
入参明文写哪都行,用 beanshell 在请求前对入参做加密
上边的监听要加在你登录动作的前边,官方文档:https://playwright.dev/python/docs/next/api/class-page#page-event-request
这是定位到了控件,还获取到了提示框里的返回,你可以用这个事件监听你实际的请求。
page.on("request", lambda request: print(">>", request.method, request.url))
或者开个录屏
无头模式有个小坑的,默认分辨率是 800*600,在 webdriver 和 playwright 里会判断当前分辨率下控件是否被遮挡,遮挡就报错点不到了。所以平常最好是调整跟你平常的浏览器分辨率一致,实际调试的时候也要加上截图才好定位问题。
是的,我这个 mock 行为是用例步骤的一环,实际实践的系统是 UI 自动化测试,做登录拿 token 只是前置初始化的环节,这个系统剩余的测试场景都是登录后的验证。实际执行测试不同系统的需要做的处理应该不同。
。。。被你这么一说。我怎么没想到用 docker 跑。傻了
这种问题我遇到过的场景是浏览器不兼容。原先可以加载的场景用的浏览器也是 chrome 么,为了进一步分析问题,可以比对两边浏览器的 network,看下是否有差异。