某系统http://192.168.2.114:10018/\*\*\*nt/#/login
手动请求门店接口:http://192.168.2.114:10018**vice/api/user/doFbmCheckUser
但是,自动化浏览器的门店请求接口:http://null/**rvice/api/user/doFbmCheckUser,导致自动化失败
解决:
✨public设置一个公用函数(根据自己的实际框架)

python
# @file:js_inject.py
def fix_base_url(driver, ip, port):
driver.execute_script(f"""
localStorage.setItem('baseIP', '{ip}');
localStorage.setItem('basePostPort', '{port}');
if (window._config) {{
window._config.baseURL =
`http://${{localStorage.getItem("baseIP")}}${{
localStorage.getItem("basePostPort")
? ":" + localStorage.getItem("basePostPort")
: ""
}}/iPOSService`;
}}
""")
在测试用例层级进行调用(示例)
python
login = LoginPage(driver)
# ① 打开页面
driver.get(url)
# ②③ 输入账号密码
login.input_account("test1")
login.input_password("******")
# ④ 在点门店之前修正 baseURL
fix_base_url(driver, "192.168.2.114", "10018")
# ⑤ 点击门店输入框(触发校验 + 门店接口)
login.click_store_input()
# ⑥ 等门店列表出现(可选)
wait_store_loaded(driver)
# ⑩ 点击登录
login.click_login()

完整的生命周期:
① 页面加载
② 输入账号
③ 输入密码
④ (此时还没校验账号密码)
⑤ 点击【门店输入框】
→ 触发后端接口
→ 后端校验账号 + 密码
⑥ 校验成功
→ 返回用户信息
→ 返回该用户可见的门店列表
⑦ 前端开始拼接 baseURL
→ 准备调用 doFbmCheckUser
⑧ ⭐ baseURL 必须在这里是正确的
⑨ 门店接口请求成功
⑩ 点击【登录】按钮(只是最终确认)