我正在尝试设置一个显示器,但它正在告诉我No such file or directory.
Traceback (most recent call last):
File "/var/www/envs/venv/proj/scripts/my_file.py", line 44, in click
display = Display(visible=0, size=(800,600))
File "/usr/lib/python2.6/site-packages/pyvirtualdisplay/display.py", line 33, in __init__
self._obj = self.display_class(
File "/usr/lib/python2.6/site-packages/pyvirtualdisplay/display.py", line 51, in display_class
cls.check_installed()
File "/usr/lib/python2.6/site-packages/pyvirtualdisplay/xvfb.py", line 38, in check_installed
ubuntu_package=PACKAGE).check_installed()
File "/usr/lib/python2.6/site-packages/easyprocess/__init__.py", line 209, in check_installed
raise EasyProcessCheckInstalledError(self)
easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help']
OSError=[Errno 2] No such file or directory
Program install error!
Run Code Online (Sandbox Code Playgroud) 我正在使用无头firefox在docker中运行python-selenium测试.
在这些测试期间,我能够使用selenium方法制作屏幕截图截图 - 但是我可以在整个测试过程中使用"视频"记录虚拟显示的东西(几个测试脚本有多种测试方法,许多webdrivers启动和停止).
那么我该如何录制完整的测试会话?
附录:我找到了一个能够准确描述我需要的网页:这里.不幸的是,当我尝试录制时出现错误.这是我正在做的命令:
xvfb-run --listen-tcp --server-num 44 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" python seltest.py &
ffmpeg -f x11grab -video_size 1920x1080 -i 127.0.0.1:44 -codec:v libx264 -r 12 /tmp/behat_1.mp4
Run Code Online (Sandbox Code Playgroud)
并且错误是(对于第二个命令):
[x11grab @ 0x1d289c0] Cannot open display 127.0.0.1:44, error 1.
127.0.0.1:44: Input/output error
Run Code Online (Sandbox Code Playgroud) 在使用PyVirtualDisplay时,试图找到如何避免在我们的Python应用程序中挂起Xvfb进程.基本问题是调用display.stop()(参见下面的代码示例)似乎没有正确关闭Xvfb进程.
PyVirtualDisplay非常简单:
from pyvirtualdisplay import Display
display = Display(backend='xvfb')
display.start()
... # Some stuff happens here
display.stop()
Run Code Online (Sandbox Code Playgroud)
现在,Display类稍作修改以防止Xvfb使用TCP端口:基本上,添加-nolisten tcp到执行命令.通过覆盖适当的XfvbDisplay类的_cmd属性来完成修改:
@property
def _cmd(self):
cmd = [PROGRAM,
dict(black='-br', white='-wr')[self.bgcolor],
'-screen',
str(self.screen),
'x'.join(map(str, list(self.size) + [self.color_depth])),
self.new_display_var,
'-nolisten',
'tcp'
]
return cmd
Run Code Online (Sandbox Code Playgroud)
在此上下文中结束Xvfb进程的正确方法是什么,以便它们被终止并且不会延迟?
非常感谢!
我为配偶写了一个网络刮刀,以节省他的工作时间.它是Python使用Selenium和打开Firefox浏览器编写的.
我自己在我使用的Linux机器上编写了这段代码,PyVirtualDisplay因此Firefox实际上并没有打开并干扰我的工作.
如何在Windows PC上的虚拟显示器中运行?
我有一个使用无头浏览器的脚本,我正在使用它crontab -e.它在前几次运行正常,然后使用以下Traceback崩溃:
Traceback (most recent call last):
File "/home/clint-selenium-firefox.py", line 83, in <module>
driver.get(url)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 248, in get
self.execute(Command.GET, {'url': url})
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 236, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 192, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Failed to decode response from marionette
Run Code Online (Sandbox Code Playgroud)
我的crontab行是:
*/10 * * * * export DISPLAY=:0 && python /home/clint-selenium-firefox.py >> /home/error.log 2>&1
Run Code Online (Sandbox Code Playgroud)
我不想用python脚本重载这个,所以我已经拿出了我认为的相关位.
from pyvirtualdisplay import Display
display = Display(visible=0, size=(800, 600))
display.start()
...
driver = webdriver.Firefox()
driver.get(url) …Run Code Online (Sandbox Code Playgroud) python cron selenium-firefoxdriver selenium-webdriver pyvirtualdisplay
我有一个selenium测试,我试图在我的ubuntu服务器上无头地运行.它使用pyvirtualdisplay和xephyr.虽然脚本在我的本地系统中运行良好,但是当我在服务器中运行它时它会挂起.我试图清除内存并重新启动服务器.但没有运气.脚本看起来像这样:
from selenium import webdriver
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1366, 768))
display.start()
driver = webdriver.Firefox()
driver.set_window_size(1366, 768)
driver.get ("http://www.google.com/")
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
selenium headless headless-browser python-2.7 pyvirtualdisplay
对于虚拟帧缓冲(无头测试)我使用的是Xvfb与PyVirtualDisplay它的工作罚款Ubuntu的,但显示在Windows7错误.这是问题发生的代码的一部分.
from pyvirtualdisplay import Display
display = Display(visible=1, size=(300, 400))
display.start()
Run Code Online (Sandbox Code Playgroud)
但是当我在Windows中运行相同的命令时,我收到此错误
Traceback (most recent call last):
File "C:\Python27\Scripts\pynt-script.py", line 9, in <module>
load_entry_point('pynt==0.8.0', 'console_scripts', 'pynt')()
File "C:\Python27\lib\site-packages\pynt\_pynt.py", line 295, in main
build(sys.argv[1:])
File "C:\Python27\lib\site-packages\pynt\_pynt.py", line 48, in build
module = imp.load_source(path.splitext(path.basename(args.file))[0], args.fi
le)
File "build.py", line 7, in <module>
display = Display(visible=1, size=(300,400))
File "C:\Python27\lib\site-packages\pyvirtualdisplay\display.py", line 33, in
__init__
self._obj = self.display_class(
File "C:\Python27\lib\site-packages\pyvirtualdisplay\display.py", line 50, in
display_class
cls.check_installed()
File "C:\Python27\lib\site-packages\pyvirtualdisplay\xvfb.py", line 34, in che …Run Code Online (Sandbox Code Playgroud) 我正在尝试使网站内部自动生成SWF。
我不能用硒移动鼠标,因为它是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()
Run Code Online (Sandbox Code Playgroud)
如何将鼠标连接到pyvirtualdisplay实例?
我正在使用macOS Mojave并尝试运行以下命令:
import torch
import torch.nn as nn
import torch.nn.functional as F
from torch import optim
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from pyvirtualdisplay import Display
from IPython import display as ipythondisplay
from IPython.display import clear_output
from pathlib import Path
import random, os.path, math, glob, csv, base64, itertools, sys
import gym
from gym.wrappers import Monitor
from pprint import pprint
# The following code is will be used to visualize the …Run Code Online (Sandbox Code Playgroud) 当我尝试运行这个简单的 python 代码时,出现以下错误
from pyvirtualdisplay import Display
disp = Display()
disp.start()
Run Code Online (Sandbox Code Playgroud)
错误:
Traceback (most recent call last):
File "C:\Users\Saeed\Desktop\disp.py", line 4, in <module>
disp = Display()
File "C:\Users\Saeed\AppData\Local\Programs\Python\Python310\lib\site-packages\pyvirtualdisplay\display.py", line 54, in __init__
self._obj = cls(
File "C:\Users\Saeed\AppData\Local\Programs\Python\Python310\lib\site-packages\pyvirtualdisplay\xvfb.py", line 44, in __init__
AbstractDisplay.__init__(
File "C:\Users\Saeed\AppData\Local\Programs\Python\Python310\lib\site-packages\pyvirtualdisplay\abstractdisplay.py", line 85, in __init__
helptext = get_helptext(program)
File "C:\Users\Saeed\AppData\Local\Programs\Python\Python310\lib\site-packages\pyvirtualdisplay\util.py", line 13, in get_helptext
p = subprocess.Popen(
File "C:\Users\Saeed\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 966, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\Saeed\AppData\Local\Programs\Python\Python310\lib\subprocess.py", line 1435, in _execute_child
hp, ht, pid, tid …Run Code Online (Sandbox Code Playgroud) pyvirtualdisplay ×10
python ×9
xvfb ×4
selenium ×3
python-2.7 ×2
centos ×1
cron ×1
ffmpeg ×1
headless ×1
mouse ×1
process ×1
pyautogui ×1
python-3.7 ×1
python-3.x ×1
subprocess ×1