Python Selenium调用driver.execute_script返回函数标识而非函数名问题
问题原因与解决方法
你遇到的问题核心是Python中函数对象的字符串表示与函数名称属性的区别:
当你直接把函数对象my_function_name传给%s做字符串格式化时,Python会调用该函数对象的默认字符串转换逻辑,输出的是函数的完整对象描述(包含内存地址),也就是你看到的function my_function_name at 0x110257760,而不是你需要的函数名称字符串。
解决方法
有两种简单的修正方式:
直接传递函数的
__name__属性
调用时传入函数的名称属性,而不是函数对象本身:session_name(my_function_name.__name__)修改
session_name函数内部处理
在函数内部自动提取传入函数对象的名称,避免调用时出错:def session_name(func_obj): # 提取函数对象的名称字符串 func_name = func_obj.__name__ return driver.execute_script('browserstack_executor: {"action": "setSessionName", "arguments": { "name": "%s" } }' % func_name) session_name(my_function_name)
补充说明
在Python里,函数是一等对象,每个函数都自带__name__属性,专门存储该函数的名称字符串;而直接对函数对象做字符串转换(比如str(my_function_name)),得到的是对象的调试用描述信息,包含内存地址,这是Python的默认行为。
内容的提问来源于stack exchange,提问作者xtru1990
相关产品推荐
相关产品推荐

