如何在Playwright的page.goto方法中动态向URL传递变量
问题根因
你传入page.goto的URL是普通单引号字符串,Python不会自动识别替换字符串内部的{id}占位符。请求发起时{和}会被按照URL编码规则转义为%7B和%7D,也就是你看到的异常占位结果(你贴的最终URL存在笔误,正确转义结果应为%7Bid%7D)。
修复方案
任选以下一种写法修改即可:
- 方案1:使用f-string格式化(Python 3.6及以上版本支持,写法最简洁),在字符串前加
f标记,触发Python的变量解析逻辑:
url_id = ["253443", "456545"] for id in url_id: print("Inside For loop", id) page.goto(f'https://abc.name.co/admin/{id}/reports/stats', timeout=0)
- 方案2:直接做字符串拼接,不使用占位符,把id变量和URL固定片段拼接为完整地址:
url_id = ["253443", "456545"] for id in url_id: print("Inside For loop", id) page.goto('https://abc.name.co/admin/' + id + '/reports/stats', timeout=0)
补充提示:如果id参数值包含中文、空格、特殊符号,建议先用
urllib.parse.quote(id)对参数值做URL编码后再拼接,避免出现请求路径异常。
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

