браузер — C ++ и 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 баллов, но я бы хотел получить еще лучший результат, если это возможно. Пожалуйста, помогите мне.

введите описание изображения здесь

Я также думал об использовании AutoHotKey. После реализации чего-то похожего на код C ++ я обнаружил, что его производительность довольно посредственная. Но, возможно, поможет написание сценария для каждой лампочки, чтобы она работала быстрее. Я попытался запустить скрипт Selenium на компьютере с Linux и Windows, но безуспешно.

Изменить: Вы могли бы подумать, что C ++ будет нажимать кнопку почти мгновенно, но это не так. Так откуда же может возникнуть задержка?

2

Решение

Я сделал сценарий с Канту селен IDE для хрома потому что это поддерживает в то время как / ENDWHILE. С Pause 50 Команда, которую я набрал 180 и более надежно. И без паузы я даже > 280 очков, но иногда это слишком быстро, и игра зависает 😉

Ниже приведен мой сценарий, вы можете скопировать и вставить этот код непосредственно на вкладку «Представление исходного кода (JSON)» в IDE kantu.

{
"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": ""}
]
}

Вот скриншот:

введите описание изображения здесь

Спасибо, что поделились URL. Это было весело 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]