如何在使用selenium webdriver(Python)时,将鼠标移动(pyautogui)附加到pyvirtualdisplay上?

12

我正在尝试自动化一个包含SWF文件的网站。

由于这是一个SWF文件,所以我无法使用selenium移动鼠标,因此我使用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实例上?

1个回答

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

你可以对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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接