Kantu越来越慢

时间:2018-03-06 19:23:02

标签: google-chrome selenium-ide

我正在使用Kantu(Selenium IDE,类似于chrome的扩展)来实现一些Web自动化。

在我的程序本身中,有一个无限循环,用标签和goto构建,所以类似于:

In [19]: df.index = pd.to_datetime(df.index).strftime('%d-%m-%Y')

In [20]: df
Out[20]:
                     A           B
02-01-2018  100.000000  100.000000
03-01-2018  100.808036  100.325886
04-01-2018  101.616560  102.307700

在代码部分中,有一些变量声明(大多数是label: start *some code* goto: start )。

正如我所说的那样,执行速度越来越慢,你可以清楚地看到它每秒3次,就像3秒内一次一样。

有趣的是,在Chrome Taskmanager(Shift + ESC)中,Kantu RAM的使用率越来越高。每当我停止脚本时,关闭Kantu并重新打开它并再次启动脚本,它再次罚款,所以它再次每秒3次。

因此看起来Kantu运行时间越长,RAM使用率就越高。并且似乎没有自动将其设置回来。

有人碰巧知道问题是什么吗?我唯一想到的是,它可能为每个storeEval创建一个新变量,即使它是相同的变量名称?这听起来合乎逻辑吗?可能这个?如果是的话,我能改变它吗?如果没有,还有什么可能是问题? 我想到的另一件事是日志,在Kantu窗口中,有日志,它们永远不会被自动清除。清除它们也可以释放RAM,使脚本也更快一些。有没有办法自动删除日志或根本不记录?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我使用!runtime来衡量这一点,你是对的。在我的测试中它来自

[echo]循环1占用了0.07 ...

[echo]循环956花了0.15 ......

我建议您在github repo将其报告为错误。

真正的解决方案可能需要一些严肃的调试。但作为解决方法,您可以使用command line feature定期启动Chrome和宏,然后在几分钟后close Chrome启动,然后重新开始。 Powershell或Python脚本可以做到这一点。

我的测试:

{
  "CreationDate": "2018-3-6",
  "Commands": [
    {
      "Command": "store",
      "Target": "fast",
      "Value": "!replayspeed"
    },
    {
      "Command": "store",
      "Target": "1",
      "Value": "i"
    },
    {
      "Command": "open",
      "Target": "https://stackoverflow.com/questions/49138473/kantu-getting-slower-and-slower",
      "Value": ""
    },
    {
      "Command": "label",
      "Target": "111",
      "Value": ""
    },
    {
      "Command": "store",
      "Target": "${!runtime}",
      "Value": "starttime"
    },
    {
      "Command": "click",
      "Target": "id=question-header",
      "Value": ""
    },
    {
      "Command": "storeEval",
      "Target": "parseFloat(\"${!runtime}\")-parseFloat(\"${starttime}\")",
      "Value": "t"
    },
    {
      "Command": "echo",
      "Target": "loop ${i} took ${t}",
      "Value": "blue"
    },
    {
      "Command": "storeEval",
      "Target": "${i} + 1",
      "Value": "i"
    },
    {
      "Command": "gotoLabel",
      "Target": "111",
      "Value": ""
    }
  ]
}