我在通过selenium使用headless的Firefox获取需要访问网站的cookies时,发现返回函数值的return语句与关闭浏览器两者不可得兼。
因为如果需要函数返回cookies,那么浏览器关闭命令就需要在return后面,但是return不仅具有返回的作用还具有break的作用,如下图:
导致浏览器无法关闭,如下图(在任务管理器中)
浏览器无法关闭会导致占用大量内存,不利于电脑运行,直观感受就是会卡顿。
而将浏览器关闭命令提前,
会报错:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidSessionIdException: Message: Tried to run command without establishing a connection
其实就是无法获取所需要东西,因为提前关闭了浏览器。
那么问题来了,有没有什么办法使得仅能够关闭浏览器有获得返回返回值呢?
我找了一下python的内置函数却没有发现,但是与return作用相似还有yield,yield可以返回函数值又不会中断后面的命令。
如下图,任务管理器中没有了Firefox:
然而…
这里有个问题就是非常麻烦,因为yield返回的是list类型,需要进行字符串处理。
暂时没有找到其他方法,如果python存在return返回函数值又不中断后面命令的语句,或者有更加简单的方法,希望大神能够指教!!!!!