You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium send_keys()传URL时正斜杠丢失如何解决

问题原因

这个正斜杠丢失和字符串转义没有任何关系,你之前尝试的replace转义思路完全是错的——转义规则是给代码语法解析层用的,而send_keys的逻辑是模拟真实物理键盘的按键派发事件,你给字符串加反斜杠最后只会在输入结果里多出无意义的反斜杠,解决不了斜杠丢失的问题。
这个问题是Selenium搭配高版本Chromium内核浏览器(Chrome/Edge 110+)的常见兼容bug:直接在send_keys里传入包含/的整段字符串时,斜杠对应的按键事件没有携带正确的keyCode,很多自定义封装的输入组件、带输入校验的输入框会直接把这种非法按键事件过滤掉,最终就得到所有斜杠都消失的错误字符串。

可落地解决方案

按稳定性从高到低排序:

  • 优先用JS注入赋值绕过键盘模拟,完全规避按键派发的兼容问题,100%不会出现字符丢失。注意赋值后必须手动派发事件,不然前端框架的双向绑定逻辑捕获不到值变化。
# 定位到目标输入框
input_ele = driver.find_element(By.ID, "你的输入框定位属性")
target_url = "https://www.test.com/downloads/myfile.zip"

# 执行JS赋值
driver.execute_script("""
const el = arguments[0], val = arguments[1];
el.value = "";
el.value = val;
el.dispatchEvent(new Event('input', {bubbles: true}));
el.dispatchEvent(new Event('change', {bubbles: true}));
""", input_ele, target_url)
  • 如果目标站点有强行为校验,会拦截JS直接赋值的操作(比如部分风控场景、云盘类站点的URL输入框),就改用逐字符输入的逻辑,遇到斜杠时不要直接传字符串形式的/,改用Selenium内置的Keys.DIVIDE(对应数字小键盘的除号键,和斜杠输入映射一致,keyCode能被正常识别)。
from selenium.webdriver.common.keys import Keys

input_ele = driver.find_element(By.ID, "你的输入框定位属性")
target_url = "https://www.test.com/downloads/myfile.zip"
input_ele.click()
input_ele.clear()

for c in target_url:
    if c == "/":
        input_ele.send_keys(Keys.DIVIDE)
    else:
        input_ele.send_keys(c)
  • 先排查基础环境问题:确认你使用的浏览器驱动(chromedriver/msedgedriver)和本地浏览器的大版本号完全一致,版本差超过2个小版本时,会出现大量按键事件派发异常的问题,更新匹配版本的驱动后,部分场景下直接传整串URL也不会丢斜杠。

不要尝试任何字符串层面的斜杠转义操作,这类操作只会让最终输入的URL带上多余的反斜杠,完全不符合URL格式规范。

内容的提问来源于stack exchange,提问作者hellojoshhhy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 20:06:28