问题标签 [pyvirtualdisplay]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 当我从 Django 网站使用 PyVirtualDisplay 运行 Selenium 时,为什么会出现 gnome 权限错误?
我正在尝试使用 Python 的 Selenium 绑定以编程方式与网站交互,作为 Django 网站的一部分。
由于我的 Selenium 代码作为 Django 网站的一部分运行,因此默认情况下(如果我理解正确的话)没有可供浏览器使用的显示。因此,我试图在我的 Selenium 代码运行之前使用 PyVirtualDisplay 启动 Xvfb。
这是我的代码:
当我通过 SSH 连接到我的服务器时(运行 Debian Squeeze、Python 2.6.6、Selenium 2.25、PyVirtualDisplay 0.1.0),以我自己的身份运行 Python 控制台,然后输入上面的代码,它工作正常。
但是,当我尝试从我的 Django 站点运行该代码,或用于su
运行 Python 控制台时www-data
(我相信这是 Django 运行的用户),我收到以下错误:
我对 Xvfb 和 Linux 有点陌生,所以我不太确定我做错了什么。
python - 在 Selenium 上运行 chrome headless
我想使用无头铬运行硒测试。
首先,我下载了 chromedriver 并将其位置作为参数传递:
驱动器和显示器:
测试运行良好,但是 chrome 不是无头的,并且在第一次测试时打开。
python - 在我们连接之前,浏览器似乎已经退出。输出为:mkdir:无法创建目录
我有一个成功运行的python脚本。.py 脚本将打开一个无头浏览器(pyvirtualdisplay & xvfb)并执行一项任务,然后关闭浏览器。脚本运行后,我遇到了 xvfb 进程保持打开状态的问题。运行多次后,它们往往会累积。我会定期通过 ssh shell 运行 killall 命令来杀死停滞的 xvfb 进程。这似乎没有引起任何问题。最近,我尝试通过设置执行以下命令的 cron 作业来自动化任务。
ps -eo pid,etime,comm | egrep '^ *[0-9]+ +([0-9]+-[^ ]*|[0-9]{2}:[0-9]{2}:[0-9]{2})' | grep Xvfb | awk '{print $1}' | xargs kill -9
这个命令只会杀死旧的 Xvfb 进程。我假设2小时大?由于我运行了此命令,因此无法运行 .py 脚本,并且收到以下错误:
python - 需要 python 脚本来使用已经打开的 Xvfb 服务器进程
我有一个运行许多 python 脚本的 php 脚本。python 脚本使用了一个使用 pyvirtualdisplay 和 xvfb 的无头 firefox 浏览器。我的问题是每个 python 脚本都会在我的 linux 服务器上打开一个新的 Xvfb 进程。因此,我得到多个进程堆叠并最终耗尽 /tmp/ 空间。
我的问题与此类似:
Xvfb multiple displays for parallel processing?
我希望始终打开一个 Xvfb 服务器进程并让所有 python 脚本都使用它。
这是我正在使用的python代码:
#set pyvirtual display
display = Display(visible=0, size=(800, 600))
display.start()
python - Xvfb - 浏览器窗口不适合显示
我正在尝试使用 Python 库在虚拟显示器中运行网络浏览器,该库pyvirtualdisplay
依赖于Xvfb
. 问题是我需要最大化浏览器,这是我没有实现的。我启动了一个大小为 1024x768 的显示器,但浏览器只占用了屏幕的一部分,并且无法最大化它。我什至尝试使用应该最大化打开它的标志(google-chrome -start-maximized
)运行浏览器,但没有成功。由于没有最大化窗口的按钮,我尝试按F11
全屏模式进入,但只占用屏幕的相同部分。结果如下图所示:
我用来启动显示的代码:
python - [在使用 PyVirtualDisplay 时] 如何避免挂起 Xvfb 进程?
在使用 PyVirtualDisplay 时,试图找到如何避免在我们的 Python 应用程序中挂起 Xvfb 进程。根本问题是调用display.stop()
(参见下面的代码示例)似乎没有正确关闭 Xvfb 进程。
PyVirtualDisplay 的使用非常简单:
现在,Display 类稍作修改以防止 Xvfb 使用 TCP 端口:基本上,添加-nolisten tcp
到正在执行的命令中。修改是通过覆盖适当的 XfvbDisplay 类的 _cmd 属性来完成的:
在这种情况下结束 Xvfb 进程的正确方法是什么,以便它们被终止并且不会逗留?
非常感谢!
python - 通过 Pyvirtualdisplay 使用 XVFB 时如何获取进程的 PID?
在使用 Pyvirtualdisplay 创建 Display 对象时尝试查找它的 PID。显示一个 Xvfb 虚拟帧缓冲区。
我们已经尝试查看该.pid
属性,但它不存在。此外,该.process
物业不存在。两者AttributeError
在访问时都会引发错误。
非常感谢!任何帮助将不胜感激!
python - Selenium with pyvirtualdisplay 无法定位元素
我有一个使用 selenium 登录网站的工作脚本,如下所示:
脚本.py
通过以下方式在我安装 Firefox 的
亚马逊 ubuntu 盒子上运行该脚本:ssh
sudo apt-get install firefox
我得到的错误是:
selenium.common.exceptions.NoSuchElementException:消息:u'无法找到元素:{“method”:“id”,“selector”:“content”}'
如果我也在另一个 ubuntu 机器上运行相同的脚本ssh
,它运行良好,没有错误,但我不知道 firefox 是如何安装在该机器上的,可能是什么原因导致该错误。是否是相关的 firefox 安装以及如何正确安装它以与 pyvirtualdisplay 和 selenium 一起使用?
python - Windows中的Python XVFB错误
对于我正在使用Xvfb
的虚拟帧缓冲区(无头测试) PyVirtualDisplay
,它在 Ubuntu 中运行良好,但在 Windows7 中显示错误。这是发生问题的代码的一部分。
但是当我在 Windows 中运行相同的命令时,我得到了这个错误
我认为我的程序无法找到 xvfb 程序/库?我安装了 xvfbwrapper (https://github.com/cgoldberg/xvfbwrapper)但问题仍然存在。我再次认为 xvfbwrapper 与 xvfb 不同?
可以进行无头测试的 Windows 平台的任何替代方案(虚拟帧缓冲区)
python - 如果忽略 SIGCHLD,Firefox Webdriver 将不起作用
我有以下代码片段可以正常工作:
但是当我通过添加忽略 SIGCHLD 信号时
在代码的开头,我收到以下错误:
selenium.common.exceptions.WebDriverException:消息:“浏览器似乎在我们可以连接之前已经退出。输出是:b'错误:无法打开显示::1127\n'
忽略 SIGCHLD 与显示有何关系?以及如何解决它?