问题标签 [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.

0 投票
1 回答
1812 浏览

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 有点陌生,所以我不太确定我做错了什么。

0 投票
0 回答
194 浏览

python - 在 Selenium 上运行 chrome headless

我想使用无头铬运行硒测试。

首先,我下载了 chromedriver 并将其位置作为参数传递:

驱动器和显示器:

测试运行良好,但是 chrome 不是无头的,并且在第一次测试时打开。

0 投票
1 回答
1293 浏览

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 脚本,并且收到以下错误:

0 投票
1 回答
989 浏览

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()

0 投票
3 回答
3936 浏览

python - Xvfb - 浏览器窗口不适合显示

我正在尝试使用 Python 库在虚拟显示器中运行网络浏览器,该库pyvirtualdisplay依赖于Xvfb. 问题是我需要最大化浏览器,这是我没有实现的。我启动了一个大小为 1024x768 的显示器,但浏览器只占用了屏幕的一部分,并且无法最大化它。我什至尝试使用应该最大化打开它的标志(google-chrome -start-maximized)运行浏览器,但没有成功。由于没有最大化窗口的按钮,我尝试按F11全屏模式进入,但只占用屏幕的相同部分。结果如下图所示:

在此处输入图像描述

我用来启动显示的代码:

0 投票
2 回答
7087 浏览

python - [在使用 PyVirtualDisplay 时] 如何避免挂起 Xvfb 进程?

在使用 PyVirtualDisplay 时,试图找到如何避免在我们的 Python 应用程序中挂起 Xvfb 进程。根本问题是调用display.stop()(参见下面的代码示例)似乎没有正确关闭 Xvfb 进程。

PyVirtualDisplay 的使用非常简单:

现在,Display 类稍作修改以防止 Xvfb 使用 TCP 端口:基本上,添加-nolisten tcp到正在执行的命令中。修改是通过覆盖适当的 XfvbDisplay 类的 _cmd 属性来完成的:

在这种情况下结束 Xvfb 进程的正确方法是什么,以便它们被终止并且不会逗留?

非常感谢!

0 投票
1 回答
668 浏览

python - 通过 Pyvirtualdisplay 使用 XVFB 时如何获取进程的 PID?

在使用 Pyvirtualdisplay 创建 Display 对象时尝试查找它的 PID。显示一个 Xvfb 虚拟帧缓冲区。

我们已经尝试查看该.pid属性,但它不存在。此外,该.process物业不存在。两者AttributeError在访问时都会引发错误。

非常感谢!任何帮助将不胜感激!

0 投票
2 回答
12155 浏览

python - Selenium with pyvirtualdisplay 无法定位元素

我有一个使用 selenium 登录网站的工作脚本,如下所示:

脚本.py

通过以下方式在我安装 Firefox 的 亚马逊 ubuntu 盒子上运行该脚本:sshsudo apt-get install firefox

我得到的错误是:

selenium.common.exceptions.NoSuchElementException:消息:u'无法找到元素:{“method”:“id”,“selector”:“content”}'

如果我也在另一个 ubuntu 机器上运行相同的脚本ssh,它运行良好,没有错误,但我不知道 firefox 是如何安装在该机器上的,可能是什么原因导致该错误。是否是相关的 firefox 安装以及如何正确安装它以与 pyvirtualdisplay 和 selenium 一起使用?

0 投票
1 回答
8553 浏览

python - Windows中的Python XVFB错误

对于我正在使用Xvfb的虚拟帧缓冲区(无头测试) PyVirtualDisplay,它在 Ubuntu 中运行良好,但在 Windows7 中显示错误。这是发生问题的代码的一部分。

但是当我在 Windows 中运行相同的命令时,我得到了这个错误

我认为我的程序无法找到 xvfb 程序/库?我安装了 xvfbwrapper (https://github.com/cgoldberg/xvfbwrapper)但问题仍然存在。我再次认为 xvfbwrapper 与 xvfb 不同?

可以进行无头测试的 Windows 平台的任何替代方案(虚拟帧缓冲区)

0 投票
1 回答
118 浏览

python - 如果忽略 SIGCHLD,Firefox Webdriver 将不起作用

我有以下代码片段可以正常工作:

但是当我通过添加忽略 SIGCHLD 信号时

在代码的开头,我收到以下错误:

selenium.common.exceptions.WebDriverException:消息:“浏览器似乎在我们可以连接之前已经退出。输出是:b'错误:无法打开显示::1127\n'

忽略 SIGCHLD 与显示有何关系?以及如何解决它?