Python 在网站的文本框中输入数字
我正在为一个游戏创建一个脚本,因为我想自动化它的某个部分。到目前为止,我已经:Python 在网站的文本框中输入数字,python,python-2.7,input,textbox,Python,Python 2.7,Input,Textbox,我正在为一个游戏创建一个脚本,因为我想自动化它的某个部分。到目前为止,我已经: 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) cli
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_输入,但它却像一个print语句 该函数不会模拟对另一个程序的击键。它将要做的是将提示符打印到它的控制台,等待您键入对该控制台的响应,然后将您键入的内容返回到脚本中。在这里完全没用
你真正想要的是一种将键盘事件发送到应用程序的方式,与发送鼠标事件的方式相同
如果您可以依赖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)
这将无法正确处理tab、escape或return等特殊键。为此,您需要发送WM\u KEYDOWN
和WM\u keydup
。但是对于您的使用,WM_CHAR
是您想要的
您还需要一个函数来查找字符串中每个字符的名称。对于'100'
来说,它实际上只是ord('1')
,ord('0')
,ord('0')
,但并不是所有的事情都是这样
您可能想看看和类似的模块,它们为您总结了所有这些 或者您可能希望使用更高级别的自动化库,如(有许多这样的库,如果您进行搜索,您将找到所有这些库的详细信息) 或者,您可能想忘记尝试在鼠标单击和按键事件方面自动化浏览器,而是在适当的(web)级别使用
或者,您可能想忘记自动化浏览器,而只是使用脚本在自己的脚本中模拟浏览器。如果您试图编写网页脚本,使用脚本或伪造浏览器可能比在浏览器上发送鼠标事件要容易得多。同时,如中所述,
raw_input(100)
实际做的是将100
打印到控制台,等待您键入回复,然后将该回复返回到您的程序。