当前位置: 首页 > 面试题库 >

Selenium 在Firefox中使用过多RAM

龙高超
2023-03-14
问题内容

我在Firefox中使用硒来自动执行Instagram上的某些任务。它
基本上在用户配置文件和通知页面之间来回移动,
并根据发现的内容执行任务。

它具有一个无限循环,可确保任务继续进行。我
每隔几步就有一次sleep()函数,但是内存使用量一直在增加。我
在Python中有这样的东西:

while(True):
    expected_conditions()
    ...doTask()
    driver.back()
    expected_conditions()
    ...doAnotherTask()
    driver.forward()
    expected_conditions()

我从不关闭驱动程序,因为这会减慢程序的速度,因为
它有很多查询要处理。有没有什么方法可以在
不关闭或退出驱动程序的情况下防止内存使用量增加超时?

编辑:添加了明确的条件,但没有帮助。我正在使用
Firefox的无头模式。


问题答案:

从Selenium开始,对Firefox 使用的RAM数量几乎没有控制权。至于你提到的浏览器客户端,即Mozilla的推移 来回用户配置文件和通知页面之间的Instagram的和 不基于它找到什么太宽泛,单任务的用例。因此, 首要的任务是打破了无限循环属于 你的用例为更小的测试。

time.sleep()

Inducing time.sleep() virtually puts a blanket over the underlying issue.
However while using Selenium and
WebDriver
to execute tests through your Automation
Framework, using time.sleep()
without any specific condition defeats the purpose of automation and should
be avoided at any cost. As per the documentation:

time.sleep(secs)
suspends the execution of the current thread for the given number of
seconds. The argument may be a floating point number to indicate a more
precise sleep time. The actual suspension time may be less than that
requested because any caught signal will terminate the sleep() following
execution of that signal’s catching routine. Also, the suspension time may
be longer than requested by an arbitrary amount because of the scheduling of
other activity in the system.

Analysis

在以前的情况下,Firefox消耗了大约80%的RAM。

Firefox_RAM

但是,根据此讨论,一些用户认为使用
的内存越多越好,因为这意味着您不会浪费RAM。Firefox使用RAM来
提高其处理速度,因为应用程序数据
RAM中的传输速度更快。

您可以执行以下一个/所有通用/特定步骤:

将Selenium升级到当前版本3.141.59。
升级GeckoDriver到GeckoDriver v0.24.0水平。
将Firefox版本升级到Firefox v65.0.2级别。
清理你的项目工作,通过你的IDE和重建仅需要依赖你的项目。
如果您的基本Web客户端版本太旧,则将其卸载并安装最新的GA和Web客户端的发行版本。
某些扩展允许您阻止此类不必要的内容,例如:

            from selenium import webdriver

    profile = webdriver.FirefoxProfile() 
    profile.add_extension(extension='extension_name.xpi')
    driver = webdriver.Firefox(firefox_profile=profile, executable_path=r'C:\path\to\geckodriver.exe')

配置文件= webdriver.FirefoxProfile()profile.add_extension(扩展名’extension_name.xpi’)驱动程序= webdriver.Firefox(firefox_profile = profile,executable_path = r’C:\ path \ to \ geckodriver.exe’)



 类似资料:
  • 我正在尝试使用Python在Selenium中测试一个示例。我正在使用代理服务器连接到具有身份验证的Internet。当我尝试运行以下代码时: Firefox浏览器打开时没有任何问题,在其代理配置中一切正常,甚至打开了验证弹出窗口。如果我对自己进行身份验证,我可以毫无问题地导航。问题是,在这背后,我得到了以下错误: 我正在使用硒2.34和火狐17。任何帮助都很感激。

  • 问题内容: 我已经使用python一段时间了,我想保存需要事先登录的特定网页。由于此网站使用javascript,因此我决定将selenium用于Firefox和webfox。我能够登录。但是该站点要求我必须接受EULA,然后才能访问所需页面。 问题是我必须向下滚动整个文本(使用单独的div滚动条),然后才能单击接受。我对Selenium和javascript完全陌生。 提供的用户名和密码有效,一

  • 问题内容: 尝试使用配置文件设置在Firefox中使用Python中的Selenium禁用Flash。这个问题指定了一种通过GUI进行操作的方法,但是对于这种特定用例,最好以编程方式进行操作。具体来说,最好的解决方案是允许在新创建的配置文件对象中禁用Flash。 非常感谢! 问题答案: 您可以使用以下配置文件禁用闪光灯。

  • 我使用selenium firefox driver 3.3.1、selenium java 3.3.0、gecko driver 0.14和firefox 52。当我运行代码时,会出现“您的连接不安全”页面,但当我手动打开它时,它将毫无错误地打开。这是我得到的错误消息 线程“main”org.openqa.selenium.webdriverexception:位于sun.reflect.nat

  • 问题内容: 这是此问题的后续操作- 想创建一个表单填充器-java,jsp,html是否足够?。我反复在网站上填写表格(例如,预约私人牙医)。 1-循环。对于每次迭代,除“下拉框-状态”的值外,所有数据均相同。 例如。每次迭代中“文本框-名称”,“文本框-年龄”保持不变。但是,状态下拉列表会在迭代中更改为NY,TX,CA。 2-如果最后一页中出现某些文本,请执行一项操作(发送邮件)。 我该如何做s

  • 我想用配置在多台机器中的多个Firefox浏览器执行并行测试。 提前道谢。 Firefox版本:60.0.1 Selenium Firefox驱动程序:3.7.1 Geckdriver版本:v0.19.0 我在不同bat文件中设置了网格和节点: HUb设置: java-jar selenium-server-standalone-3.1.0.jar-port 4444-role HUb 节点设置: