目前,我使用selenium来自动化Web应用程序交互,但为了节省执行时间,我需要打开几个选项卡并在它们之间切换。我已经弄清楚如何使用ctypes来发布我需要做的所有关键组合我只是不知道如何关注'或者激活窗口。
从我收集到的内容中,打开新标签并切换到它后,您必须执行
browser.switch_to_window(browser.current_window_handle)
将selenium的焦点切换到活动标签。然而,我的问题是激活操作系统中的实际浏览器窗口,这超出了selenium的范围。
我的主要限制是我在任何情况下都不能使用AutoIT。这是一个"我做了一个赌注"类型情况。另外,我更愿意坚持使用vanilla库。我必须安装的每个软件包都会对项目产生负面影响,因此请尽可能使用Python附带的内置函数和库。
最后,我不打算从这里复制任何代码,所以如果你能够并且愿意提供帮助,请以帮助我理解的方式这样做,而不是仅仅解决我的问题。
我感谢您提供给我的任何指导,这是我在stackoverflow上的第一篇文章!希望我提供了大量的信息。
Relevant info:
-using windows 7
-using firefox (target window for activation)
-using python 3
-can use robot framework
-using selenium (part of robot framework)
-using ctypes (ships with python 3)
-can import as many vanilla modules as needed,
only constraint is I don't want to install additional
为了防止你们中任何人知道更简单的方法,这就是我处理关键组合的方式,因为它们在硒中无法正常工作:
import ctypes
user32 = ctypes.windll.user32
#CTRL+T
sleep(1)
user32.keybd_event(0x11,0,0,0)
sleep(1)
user32.keybd_event(0x54,0,0,0)
sleep(1)
user32.keybd_event(0x54,0,2,0)
sleep(1)
user32.keybd_event(0x11,0,2,0)
#CTRL+TAB
sleep(1)
user32.keybd_event(0x11,0,0,0)
sleep(1)
user32.keybd_event(0x09,0,0,0)
sleep(1)
user32.keybd_event(0x09,0,2,0)
sleep(1)
user32.keybd_event(0x11,0,2,0)
#CTRL+W
sleep(1)
user32.keybd_event(0x11,0,0,0)
sleep(1)
user32.keybd_event(0x57,0,0,0)
sleep(1)
user32.keybd_event(0x57,0,2,0)
sleep(1)
user32.keybd_event(0x11,0,2,0)
#CTRL+1
sleep(1)
user32.keybd_event(0x11,0,0,0)
sleep(1)
user32.keybd_event(0x31,0,0,0)
sleep(1)
user32.keybd_event(0x31,0,2,0)
sleep(1)
user32.keybd_event(0x11,0,2,0)
#CTRL+2
sleep(1)
user32.keybd_event(0x11,0,0,0)
sleep(1)
user32.keybd_event(0x32,0,0,0)
sleep(1)
user32.keybd_event(0x32,0,2,0)
sleep(1)
user32.keybd_event(0x11,0,2,0)
谢谢! :)