C ++和Selenium IDE的速度不够快

时间:2018-05-05 05:03:38

标签: c++ browser automation selenium-ide

我有一个游戏,我正在尝试自动化。游戏的工作方式如下:屏幕上有一些灯泡,只有一个灯泡点亮。按下它时,另一个亮起。如果按下错误的灯泡,你会受到5秒的惩罚,总共有60秒。

我在手机上得到了90分。但是我想要超过150或至少接近。

所以我编写了这个C ++程序,但它只获得了85分。

#include <bits/stdc++.h>
#define _WIN32_WINNT 0x0500
#include"windows.h"

using namespace std;

inline bool if_yell(HDC &dc, int x, int y){
    COLORREF color = GetPixel(dc, x, y);
    if( (int)GetRValue(color)==251 && (int)GetGValue(color)==190 && 
(int)GetBValue(color)==43)return 1;
    return 0;
}

 int px[]={327,1014,508,849,332,1014,331,1015,501,849,670,676,564,689},py[]={214,214,385,386,558,558,903,901,731,730,561,904,657,891};

int main()
{
    HDC dc = GetDC(NULL);
    POINT _cursor;
    COLORREF color;
    int ls=-1;
    while(1){
        for(int i=0;i<14;++i){
            if(if_yell(dc,px[i],py[i]) && ls!=i){
                    INPUT Inputs[3] = {0};

                    Inputs[0].type = INPUT_MOUSE;
                    Inputs[0].mi.dx = px[i]*34; // desired X coordinate
                    Inputs[0].mi.dy = py[i]*61; // desired Y coordinate
                    Inputs[0].mi.dwFlags = MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE;

                    Inputs[1].type = INPUT_MOUSE;
                    Inputs[1].mi.dwFlags = MOUSEEVENTF_LEFTDOWN;

                    Inputs[2].type = INPUT_MOUSE;
                    Inputs[2].mi.dwFlags = MOUSEEVENTF_LEFTUP;

                    SendInput(3, Inputs, sizeof(INPUT));
                    ls=i;
            }
        }
    }
    return 0;
}

然后我尝试使用Selenium IDE。我记录了自己的演奏,这就是结果。我添加了更多相同的命令并运行它。

这很快。它得分大约102分,但如果可能,我希望得到更好的结果。请帮帮我。

enter image description here

我还考虑过使用AutoHotKey。在实现类似于C ++代码的东西之后,我发现它的性能非常平庸。但也许为每个灯泡编写一个脚本以使其更快将有所帮助。我尝试在Linux和Windows计算机上运行Selenium脚本但没有任何成功。

编辑:您会认为C ++几乎可以立即按下按钮,但事实并非如此。那么延迟来自哪里呢?

1 个答案:

答案 0 :(得分:0)

我使用kantu selenium IDE for chrome创建了一个脚本,因为它支持while/endwhile。使用Pause 50命令,我获得 180 的分数,并且更可靠。没有停顿,我甚至得到了&gt; 280分,但有时这太快了,游戏就会挂起; - )

以下是我的脚本,您可以将此代码直接复制并粘贴到&#34;源视图(JSON)&#34; kantu IDE的标签。

{
  "CreationDate": "2018-5-5",
  "Commands": [
    {
      "Command": "store",
      "Target": "fast",
      "Value": "!replayspeed"
    },
    {
      "Command": "open",
      "Target": "(URL HERE)",
      "Value": ""
    },
    {
      "Command": "click",
      "Target": "link=Start!",
      "Value": ""
    },
    {
      "Command": "while",
      "Target": "3 > 1",
      "Value": ""
    },
    {
      "Command": "clickAt",
      "Target": "css=#game > ul > li.active",
      "Value": "87,85"
    },
    {
      "Command": "comment",
      "Target": "Pause => Slow down a bit...",
      "Value": ""
    },
    {
      "Command": "pause",
      "Target": "50",
      "Value": ""
    },
    {
      "Command": "endWhile",
      "Target": "",
      "Value": ""
    }
  ]
}

以下是截图:

enter image description here

感谢您分享网址。这很有趣:)