返回函数值语句:selenium获取cookies中close浏览器

本文探讨了使用Selenium和Headless Firefox获取网站cookies时遇到的问题。作者发现,在尝试关闭浏览器的同时返回cookies时,会遇到内存占用高和InvalidSessionIdException错误。通过使用yield替代return,解决了上述问题,但需额外处理返回的list类型。

我在通过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返回函数值又不中断后面命令的语句,或者有更加简单的方法,希望大神能够指教!!!!!

Python中,Selenium是一个流行的库,用于模拟浏览器操作,包括自动登录等场景。如果你想要利用Selenium获取和管理cookies,可以按照以下步骤进行: 1. **安装依赖**: 首先需要安装`webdriver_manager`(用于下载WebDriver)和`selenium`库: ```bash pip install webdriver_manager selenium ``` 2. **初始化浏览器**: 使用Selenium启动一个浏览器实例,并选择相应的驱动程序。例如,对于Chrome浏览器,你可以这样设置: ```python from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) ``` 3. **登录并获取cookies**: 访问登录页面,通过`driver.get()`方法打开网页。然后,在登录后,可以使用`driver.get_cookies()`方法获取当前会话的所有cookies: ```python cookies = driver.get_cookies() print(cookies) ``` 4. **保存cookies**: 如果你想将cookies保存下来,可以将其转换为字典列表: ```python saved_cookies = [dict(cookie) for cookie in cookies] ``` 5. **注销或关闭浏览器**: 在完成自动化操作后,记得关闭浏览器以释放资源: ```python driver.quit() ``` 6. **后续访问网站时使用cookies**: 为了在下次访问时使用刚才获取cookies,可以在创建新的`webdriver.Chrome`实例时传递cookies: ```python options = webdriver.ChromeOptions() options.add_experimental_option('excludeSwitches', ['enable-automation']) # 将cookies添加到options中 for cookie in saved_cookies: options.add_argument(f'--add-cookie={cookie["name"]}={cookie["value"]}') driver = webdriver.Chrome(options=options, executable_path=ChromeDriverManager().install()) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值