我需要在字符串中添加这些字符:"'\;
userID = "__\"__\'__\;__"
我正在通过python运行javascript来更新用户名字段:
driver.execute_script("window.document.getElementById('username').value = '%s';" %userID)
现在我的问题是,最后我的脚本变为:
window.document.getElementById('username').value = '__"__'__\;__';
这会导致错误,因为我的单引号没有转义字符。如何将转义字符保留在单引号前面?
答案 0 :(得分:1)
不要使用插值。而是将值作为参数传递给execute_script
:
driver.execute_script("window.document.getElementById('username').value = arguments[0];",
userID)
您在脚本后面传递给execute_script
的参数在JavaScript端可用作arguments[0]
,arguments[1]
等。 (这不是一个特殊的Selenium,而是JavaScript如何工作。你给execute_script
的脚本包装在一个函数对象中,函数参数可以在arguments
object.上找到)
当您将值作为上述参数传递时,Selenium会将Python值序列化为浏览器端的相应JavaScript值,并保留您的字符串。