【发布时间】:2019-07-31 01:08:56
【问题描述】:
我在 Firefox 中使用 selenium 来自动化 Instagram 上的一些任务。它基本上在用户个人资料和通知页面之间来回切换,并根据找到的内容执行任务。
它有一个无限循环,可确保任务继续进行。我每隔几步就有 sleep() 函数,但内存使用量不断增加。我在 Python 中有这样的东西:
while(True):
expected_conditions()
...doTask()
driver.back()
expected_conditions()
...doAnotherTask()
driver.forward()
expected_conditions()
我从不关闭驱动程序,因为这会大大降低程序的速度,因为它需要处理很多查询。有什么办法可以在不关闭或退出驱动的情况下防止内存使用量增加超时?
编辑:添加了明确的条件,但这也无济于事。我正在使用 Firefox 的无头模式。
【问题讨论】:
-
尽量避免使用 sleep 方法,使用 Explicit Waits 或 Implicit Waits 方法更多信息请参见selenium-python.readthedocs.io/waits.html
-
好的。明天我会尝试这样做,并在此处发布发现。
-
从
sleep()更改为等待不会改变 任何关于:内存使用情况。不使用睡眠的原因是因为这会硬编码脚本不做任何事情的时间间隔,希望页面会改变状态;并且使用 *Wait 间隔不是硬编码的,而是“一旦发生变化”。在您的用例中,听起来确实像您使用sleep()作为执行之间的分隔符,并且在无限循环中运行,您听起来并不需要减少几秒钟的时间。
标签: python selenium firefox geckodriver selenium-firefoxdriver