2013-07-11 6 views
0

게임의 특정 부분을 자동화하고 싶기 때문에 게임 스크립트를 만들고 있습니다. 웹 사이트의 텍스트 상자에 숫자를 입력하십시오.

import win32api, win32con, time 
def click(x,y): 
    win32api.SetCursorPos((x,y)) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0) 
    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0) 
click(100,655) 
time.sleep(3) 
click(740,580) 
time.sleep(1) 
raw_input(100) 

지금까지 내가 그때 내가 번호를 입력 할 수있는 텍스트 상자를 클릭에 갈 필요가 올바른 페이지를 클릭 한 후 텍스트 상자를 선택한 후 나는 확실히 알아낼 수 없습니다 : 지금까지 내가 가진 번호를 입력하는 방법. raw_input을 사용하려고 생각했지만 대신 print 문처럼 작동했습니다.

+1

웹 페이지를 스크립팅하려는 경우 브라우저를 스크립팅하기 위해 ['selenium'] (http://docs.seleniumhq.org)과 같은 것을 사용하는 것이 훨씬 더 쉽습니다. 또는 [ 'mechanize'] (https://pypi.python.org/pypi/mechanize/)를 사용하면 브라우저에서 마우스 이벤트를 보내는 것보다 브라우저를 가짜로 만들 수 있습니다. – abarnert

+0

http://infohost.nmt.edu/tcc/help/pubs/python/web/raw_input-function.html –

+1

한편, raw_input (100)이 실제로하는 일은 [the docs] (http : //docs.python.org/2/library/functions.html # raw_input), 콘솔에'100'을 출력하고 응답을 입력 할 때까지 기다렸다가 그 응답을 프로그램에 반환하십시오. – abarnert

답변

1

raw_input 함수는 다른 프로그램의 키 입력을 시뮬 레이팅하지 않습니다. 그러면 콘솔에 프롬프트가 출력되고, 콘솔에 대한 응답을 입력 할 때까지 기다렸다가 입력 한 내용을 스크립트에 반환합니다. 여기서는 전혀 쓸모가 없습니다.

실제로 원하는 것은 마우스 이벤트를 보내는 것과 같은 방식으로 키보드 이벤트를 앱에 보내는 것입니다.


당신이, 당신은 단지 대신에 일을 사용할 수 있습니다 존재하는 Windows 스크립트 호스트에 따라 달라질 수 있습니다 (나중에 Vista 및 XPSP3와 항상 있다고 생각하는, 이전 XP가 설치 될 수있다) 경우 낮은 레벨 :

:

wshell = win32com.client.Dispatch("WScript.Shell") 
wshell.SendKeys("foo") 
그렇지 않으면

, 당신은 (즉, win32api의 문서에 설명 된, 그래서 나는 그것을 알고 이미 가정) 다음이 같은 윈도우에 대한 핸들을 얻을해야합니다

def sendkey(hwnd, keycode): 
    win32api.PostMessage(hwnd, win32con.WM_CHAR, keycode, 0) 

탭, 이스케이프 또는 리턴과 같은 특수 키를 처리하지 않습니다. 이를 위해서는 WM_KEYDOWNWM_KEYUP을 보내야합니다. 그러나 당신의 사용을 위해 WM_CHAR은 당신이 원하는 것입니다.

문자열의 각 문자에 대해 keycode을 조회하는 기능이 필요합니다. '100'의 경우 실제로는 ord('1'), ord('0'), ord('0')이지만 모든 경우에는 그렇지 않습니다.


당신은 당신을 위해이 모든 것을 마무리 SendKeys과 유사한 모듈을보고 할 수 있습니다.

아니면 AutoPy 같은 높은 수준의 자동화 라이브러리를 사용할 수 있습니다는 (이들 중 많은이 있고, 당신이 SO 검색하면 당신은 그들 모두에 대한 세부 정보를 확인할 수 있습니다).

또는 마우스 클릭 및 키 이벤트와 관련하여 브라우저를 자동화하고 대신 selenium을 사용하여 적절한 (웹) 수준에서 처리하는 것을 잊어 버릴 수 있습니다.

브라우저를 자동화하는 것을 잊어 버리고 대신 mechanize을 사용하여 브라우저에서 브라우저를 시뮬레이트하고 싶을 수 있습니다.

+0

위대한 작품, 건배 – bigl

관련 문제