【问题标题】:How I can attach the mouse movement (pyautogui) to pyvirtualdisplay with selenium webdriver (python)?如何使用 selenium webdriver (python) 将鼠标移动 (pyautogui) 附加到 pyvirtualdisplay?
【发布时间】:2016-06-18 07:57:26
【问题描述】:

我正在尝试自动化一个网站,里面有一个 SWF。

我不能用 selenium 移动鼠标,因为它是一个 SWF,所以为了解决这个问题,我使用了 pyautogui 库。

一切正常!但是!当我使用 pyvirtualdisplay 隐藏导航器时鼠标未连接,所以我仍然看到 pyautogui 如何移动我的鼠标。

我的示例代码:

from selenium import webdriver
from pyvirtualdisplay import Display
import pyautogui

display = Display(visible=1, size=(1600,900))
display.start()


driver = webdriver.Firefox()
driver.set_window_size(1600,900)
driver.get('https://website.where.I.have.the.SWF.com')

sleep(5)
pyautogui.click(450, 180)

driver.close()
display.stop()

如何将鼠标附加到 pyvirtualdisplay 实例?

【问题讨论】:

    标签: python selenium-webdriver mouse pyautogui pyvirtualdisplay


    【解决方案1】:

    您可以对 pyautogui 内部进行猴子补丁。在“xvfb”后端测试。

    import os
    from pyvirtualdisplay import Display
    import pyautogui
    import Xlib.display
    
    v_display = Display(visible=1, size=(1600,900))
    v_display.start()  # this changes the DISPLAY environment variable
    # sadly, pyautogui does not detect this change
    pyautogui._pyautogui_x11._display = Xlib.display.Display(
                    os.environ['DISPLAY']
                )
    ...
    pyautogui.click(...)  # clicks on v_display
    ...
    
    v_display.stop()
    

    注意:这应该足以启用 pyautogui 鼠标,使用键盘可能需要额外配置键映射。 欲了解更多信息,请参阅: https://github.com/asweigart/pyautogui/blob/master/pyautogui/_pyautogui_x11.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      相关资源
      最近更新 更多