Python中如何在三引号字符串内的字典中嵌入变量?
解决Python变量嵌入CDP命令脚本的问题
你当前的问题是:Python变量os没有被正确嵌入到CDP命令的JS脚本字符串中,因为三引号内的os会被当作JavaScript变量而非Python变量处理,自然无法获取到Python中os的值。
以下是几种正确的变量嵌入方式:
方法1:使用f-string(Python3.6+推荐)
在三引号字符串前添加f前缀,并用{}包裹Python变量,同时注意为JS字符串添加引号(确保JS能识别为字符串字面量):
os = 'Linux' driver.execute_cdp_cmd( "Page.addScriptToEvaluateOnNewDocument", { "source": f""" Object.defineProperty(navigator, 'platform', {{get: () => '{os}'}}); """ } )
注意:这里JS对象的大括号需要用双大括号{{}}转义,避免被f-string解析为占位符。
方法2:使用str.format()方法
适合Python3.6之前的版本,通过占位符替换变量:
os = 'Linux' driver.execute_cdp_cmd( "Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'platform', {{get: () => '{0}'}}); """.format(os) } )
或者使用命名占位符更清晰:
os = 'Linux' driver.execute_cdp_cmd( "Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'platform', {{get: () => '{os_val}'}}); """.format(os_val=os) } )
方法3:字符串拼接(不推荐,易出错)
直接通过+拼接字符串,但需要手动处理引号和转义:
os = 'Linux' driver.execute_cdp_cmd( "Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'platform', {get: () => '""" + os + """'}); """ } )
这种方式在变量包含特殊字符(如引号、换行)时容易出现语法错误,所以优先推荐前两种方法。
内容的提问来源于stack exchange,提问作者alimayorru
相关产品推荐
相关产品推荐

