如何使用 selenium webdriver (python) 将鼠标移动 (pyautogui) 附加到 pyvirtualdisplay?
How I can attach the mouse movement (pyautogui) to pyvirtualdisplay with selenium webdriver (python)?
我正在尝试使网站自动化,但里面有 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 实例?
您可以猴子修补 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
我正在尝试使网站自动化,但里面有 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 实例?
您可以猴子修补 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