首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将pyautogui附加到虚拟显示器上?

如何将pyautogui附加到虚拟显示器上?
EN

Stack Overflow用户
提问于 2019-07-17 14:56:49
回答 2查看 1.8K关注 0票数 2

如何在多线程模式下将pyautogui附加到显示器上?

在我的代码示例中,pyautogui始终可以访问上面的显示器。

是否可能在每个显示器上都有pyautogui控件?

代码语言:javascript
复制
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()

输出:

代码语言:javascript
复制
<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>

附注:

我知道如何通过selenium进行点击,但我需要确切的pyautogui事件。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-23 13:01:07

来自https://pyautogui.readthedocs.io/en/latest/的pyautogui文档:

代码语言:javascript
复制
Q: Does PyAutoGUI work on multi-monitor setups.
A: No, right now PyAutoGUI only handles the primary monitor.
票数 0
EN

Stack Overflow用户

发布于 2021-04-01 23:17:07

这是很难做到的--但有一些巧妙的解决办法:

多亏了阿比舍克·瓦德

要运行PYAUTOGUI,您需要使用Xdisplay制作一个对接程序,并为PYAUTOGUI提供虚拟显示的路径。基本上,它将在后端运行显示内存,而不需要实际部署Display.server。

希望这对你有用(代码可以在上面的链接上找到,我还没有测试).

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57078828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档