如何pyautogui
以多线程模式连接到显示器?
在我的代码示例中,pyautogui
始终可以访问上部显示。
是否可以pyautogui
在每个显示器上进行控制?
import os
from selenium import webdriver
from pyvirtualdisplay import Display
import Xlib.display
# ...
# let's say i run this function in two threads
def do_work(data):
v_display = Display(visible=0, size=(900, 600))
v_display.start()
# How can i attach v_display to the pyautogui?
import pyautogui
print(v_display)
# https://stackoverflow.com/questions/35798478/how-i-can-attach-the-mouse-movement-pyautogui-to-pyvirtualdisplay-with-seleniu
pyautogui._pyautogui_x11._display = Xlib.display.Display(os.environ['DISPLAY'])
print(pyautogui._pyautogui_x11._display)
chrome_options = Options()
chrome_options.add_argument('--user-data-dir='+str(data['profile']))
chrome_options.add_argument("--start-maximized")
driver = webdriver.Chrome('chromedriver', chrome_options=chrome_options)
driver.get('https://my_resource.co/?'+data['param'])
pyautogui.click(x=880, y=580)
# Click always goes through the upper display
# I also tried to take screenshots they are always the same
# ...
driver.quit()
v_display.stop()
输出:
<Display cmd_param=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '900x600x24', ':1086'] cmd=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '900x600x24', ':1086'] oserror=None return_code=None stdout="None" stderr="None" timeout_happened=False>
<Display cmd_param=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '900x600x24', ':1087'] cmd=['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '900x600x24', ':1087'] oserror=None return_code=None stdout="None" stderr="None" timeout_happened=False>
<Xlib.display.Display object at 0x7f4f5493aa90>
<Xlib.display.Display object at 0x7f4f5493a8d0>
PS
我知道如何点击selenium
,但我需要确切的pyautogui
事件。