如何在Python的Selenium中使用带变量的execute_script方法
如何在Selenium的execute_script中传递Python变量到JavaScript?
我懂你遇到的问题了——直接在JS代码里写Python变量名肯定行不通,因为Python的变量上下文和浏览器的JavaScript环境是完全隔离的,浏览器根本不知道keyy这个东西是什么,所以才会抛出ReferenceError。
这里有两种靠谱的解决方式:
方法1:使用字符串格式化插入变量
如果你的变量内容比较简单(没有单引号、双引号这类特殊字符),可以用Python的字符串格式化把变量值直接嵌入到JS代码里:
pageurl = 'https://www.google.com' driver.get(pageurl) keyy = 'blabla' driver.execute_script(f"alert('{keyy}')")
不过要注意,如果keyy里包含单引号(比如keyy = "I'm boon"),这种写法会破坏JS代码的语法,引发新错误,所以它只适合简单场景。
方法2:使用execute_script的参数传递(推荐)
这是更安全、通用的方式,execute_script方法支持在JS代码后面传入额外参数,这些参数会作为JS里arguments数组的元素被访问到:
pageurl = 'https://www.google.com' driver.get(pageurl) keyy = 'blabla' driver.execute_script("alert(arguments[0])", keyy)
要是需要传递多个变量也很方便,比如:
var1 = 'hello' var2 = 'world' driver.execute_script("alert(arguments[0] + ' ' + arguments[1])", var1, var2)
这种方式不需要处理字符串转义,不管变量里有什么特殊字符都能正常工作,也是官方推荐的做法。
内容的提问来源于stack exchange,提问作者Mr.Boon
相关产品推荐
相关产品推荐

