相关文章推荐
旅行中的荒野  ·  团学工作_中国人民大学生态环境学院·  3 月前    · 
高大的日光灯  ·  红灯记_百度百科·  5 月前    · 
被表白的楼梯  ·  驻缅甸大使陈海在缅官方媒体发表署名文章《共建 ...·  1 年前    · 
爱看书的核桃  ·  与疫情赛跑!中国专家组在意大利开工首日全记录 ...·  1 年前    · 
健壮的回锅肉  ·  陕西4男子盗刘邦陪葬墓 ...·  2 年前    · 
Code  ›  在cron中运行无头硒时,出现错误"Pyperclip无法为您的系统找到复制/粘贴机制“。开发者社区
python cron
https://cloud.tencent.com/developer/ask/sof/107097314
怕老婆的铅笔
2 年前
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
提问
问 在cron中运行无头硒时,出现错误"Pyperclip无法为您的系统找到复制/粘贴机制“。
Stack Overflow用户
提问于 2022-07-04 09:25:39
EN

我用Python实现了一个selenium脚本,将一些图片和内容上传到Facebook,我将其命名为FBUpload.py。

当我以这种方式启动它时,它完美地工作(在无头模式下):

Xvfb :10 -ac &
python3 /home/someuser/scripts/FBUpload.py

问题是,当我试图配置一个启动相同脚本的cronjob时,方法是:

00 * * * * Xvfb :10 -ac &
01 * * * * python3 /home/someuser/scripts/FBUpload.py
45 * * * * kill -9 $(ps -auxw |grep Xvf|head -1| awk '{print $2}')

如果出现以下错误,则会失败:

无法找到系统的复制/粘贴机制。

这是我的设置:Ubuntu20.04.4LTS\ Python3 _

下面是我已经安装的复制和粘贴机制:

PyQt5 5.15.6
PyQt5-Qt5 5.15.2
PyQt5-sip 12.10.1
QtPy 2.1.0
xclip 0.13-1 (in /usr/bin because it was installed via apt)
xsel 1.2.0+git9bfc13d.20180109-3 (in /usr/bin because it was installed via apt)

(我无法像本文中描述的那样下载PyQt4或qkt: pyperclip模块引发错误消息 ,所以我按照建议的解决方案下载了QtPy。但问题依然存在。

我尝试了类似问题的帖子中的修复,但没有一个对我有用。我想知道这个问题是否与用户有关(因为当我用"sudo“运行脚本时,根用户找不到非root用户安装的库)。

我还发现了另一个似乎类似的问题(但问题不是cron,而是systemd): Ubuntu 16.04 - Python 3-终端和systemd中的Pyperclip

2 236 0 票数 2
EN
python
selenium
cron
xvfb
pyperclip

回答 2

Stack Overflow用户

发布于 2022-07-27 13:10:12

您需要提供 DISPLAY env。

试试这个:

01 * * * * DISPLAY=":0" python3 /home/someuser/scripts/FBUpload.py

如果这不起作用,请检查当前env,尝试找到正确的值:

echo $DISPLAY
票数 1
EN

Stack Overflow用户

发布于 2022-07-27 22:35:03

剪贴板是GUI不可分割的一部分。由于您正在使用 Xvfb ,因此您的系统可能没有自己的GUI。所以没有剪贴板可以复制和粘贴。 吡咯烷酮夹 没有可访问的剪贴板,因此无论以何种方式访问它,都将面临以下错误:

Pyperclip could not find a copy/paste mechanism for your system

解决方案

在shell中检查此命令:

xclip

如果输出是 Error: No display: <null> ,事情可能会变得更加困难。

但是,为了有一个GUI,因为您可以通过ssh将隧道X11设置到桌面计算机上的X服务器。如果您仍然从xclip中看到一个错误,那么问题在于您的设置。最简单的方法是检查:

echo $DISPLAY

如果您得到一个空白输出,那么您的会话对您的X11隧道一无所知。你需要正确设置隧道。一旦你的设置是正确的固定,除草夹和你的程序应该是工作的。

替代方法

另一种方法是使用 PyVirtualDisplay ( Xvfb、Xephyr和Xvnc的Python包装器)运行无头硒WebDriver测试。

在Ubuntu/Debian上安装PyVirtualDisplay:

$ sudo apt-get install xvfb python-pip
$ sudo pip install pyvirtualdisplay

在您的程序中,您可以:

#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Browser will run in a virtual display but won't be visible
 
推荐文章
旅行中的荒野  ·  团学工作_中国人民大学生态环境学院
3 月前
高大的日光灯  ·  红灯记_百度百科
5 月前
被表白的楼梯  ·  驻缅甸大使陈海在缅官方媒体发表署名文章《共建人类命运共同体 ...
1 年前
爱看书的核桃  ·  与疫情赛跑!中国专家组在意大利开工首日全记录-新华网
1 年前
健壮的回锅肉  ·  陕西4男子盗刘邦陪葬墓 遇塌方1人被埋身亡(图)--财经--人民网
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号