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

我用来启动显示的代码:
from pyvirtualdisplay import Display
Display(visible=1, size=(1024,768)).start()
Run Code Online (Sandbox Code Playgroud) 我有一个使用selenium登录网站的工作脚本,如下所示:
script.py
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(1024, 768))
display.start()
browser = webdriver.Firefox()
actions = webdriver.ActionChains(browser)
browser.get('some_url_I_need')
content = browser.find_element_by_id('content') # Error on this line
Run Code Online (Sandbox Code Playgroud)
在亚马逊ubuntu框上运行该脚本,通过ssh以下方式安装firefox:
sudo apt-get install firefox
我得到的错误是:
selenium.common.exceptions.NoSuchElementException:消息:u'无法找到元素:{"method":"id","selector":"content"}'
如果我也在另一个ubuntu盒子上运行相同的脚本ssh,它运行正常,没有错误,但我不知道firefox是如何安装在该盒子上的,可能是该错误的原因.是关联firefox安装以及如何正确安装它以与pyvirtualdisplay和selenium一起使用?
我正在尝试使用 Python 和 selenium 打开一个简单的 chrome 实例。请在下面找到我的代码:
import time, datetime, sys, os
start_time = time.time()
from datetime import datetime
os.system("cls")
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
CHROME_PATH = 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe'
CHROMEDRIVER_PATH = 'C:\\Users\\'+userID+'\\'+filename+'\\chromedriver.exe'
WINDOW_SIZE = "1920,1080"
chrome_options = Options()
chrome_options.add_argument("--window-size=%s" % WINDOW_SIZE)
chrome_options.add_argument("disable-gpu")
chrome_options.add_argument("disable-infobars")
chrome_options.add_argument("--disable-notifications")
chrome_options.binary_location = CHROME_PATH
browser = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH,chrome_options=chrome_options)
time.sleep(1)
browser.get("https://www.google.com")
os.system("cls")
time.sleep(2) …Run Code Online (Sandbox Code Playgroud) python-3.x phantomjs selenium-webdriver pyvirtualdisplay google-chrome-headless
我pyvirtualdisplay在创建WebDriver实例之前启动了一个显示.如果我使用Chrome,它可以毫无问题地运行:Chrome会在pyvirtualdisplay创建的Xephyr实例中显示.但是,当我使用Firefox时,会出现Xephyr实例,但Firefox会出现在它之外.
以下是完全重现问题的代码:
from selenium import webdriver
from selenium.webdriver.firefox.webdriver import FirefoxBinary
import pyvirtualdisplay
binary = FirefoxBinary()
with pyvirtualdisplay.Display(visible=True):
if True: # Set to False to use Chrome...
driver = webdriver.Firefox(None, binary)
else:
driver = webdriver.Chrome()
driver.get("http://www.google.com")
driver.quit()
Run Code Online (Sandbox Code Playgroud)
上面的代码是一个更复杂的代码的最小版本(这解释了看似无用的FirefoxBinary()).
我的测试按预期工作和运行PyVirtualDisplay==0.2.1,但我对此包的最新版本有问题(例如,PyVirtualDisplay==0.2.5)。
我的代码片段:
...
def _set_up(self):
# Creation of instance of the browser.
self.display = Display(visible=0, size=(config.WIDTH, config.HEIGHT))
self.display.start()
desired = self.get_desired_capabilities(config.BROWSER)
self.driver = webdriver.Remote(command_executor=config.ACTIVE_NODE,
desired_capabilities=desired)
# Maximize window size.
self.driver.set_window_size(config.WIDTH, config.HEIGHT)
...
Run Code Online (Sandbox Code Playgroud)
错误信息:
错误追溯(最近一次调用):文件“/usr/local/Cellar/python/3.7.6/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py”,第 59 行,在 testPartExecutor 产量文件“/usr/local/Cellar/python/3.7.6/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py”,第 624 行,运行 self.setUp( ) 文件“/Users/ratmirasanov/Documents/testing/welcome_widget/test_welcome_widget.py”,第 24 行,在 setUp self._set_up() 文件“/Users/ratmirasanov/Documents/testing/utilities.py”,第 41 行,在 _set_up self.display.start() 文件“/Users/ratmirasanov/Documents/testing/venv/lib/python3.7/site-packages/pyvirtualdisplay/abstractdisplay.py”,第 171 行,在开始时引发 XStartTimeoutError(msg % d) pyvirtualdisplay .abstractdisplay。XStartTimeoutError:无法在显示“:1001”上启动 X(xdpyinfo 检查失败)。
我没有找到任何可行的解决方案来解决这个问题。任何帮助将不胜感激。谢谢。
UPD:该PyVirtualDisplay==0.2.5软件包在 Ubuntu 18.04.3 LTS 上按预期工作。
xdpyindo程序位于何处:/usr/bin/xdpyinfo。
问题出在我的 Mac(macOS …
我正在本地计算机上运行同事笔记本(她使用了 collab)。
导入后,立即执行这行代码
display = pyvirtualdisplay.Display(visible=0, size=(1400, 900))
_ = display.start()
Run Code Online (Sandbox Code Playgroud)
导致此错误(缩写,它的页面很长):
~/opt/anaconda3/envs/general-ml/lib/python3.8/site-packages/pyvirtualdisplay/abstractdisplay.py in _wait_for_pipe_text(self, rfd)
293 (rfd_changed_ls, _, _) = select.select([rfd], [], [], 0.1)
294 if not self.is_alive():
--> 295 raise XStartError(
296 "%s program closed. command: %s stderr: %s"
297 % (self._program, self._command, self.stderr)
XStartError: Xvfb program closed. command: ['Xvfb', '-br', '-nolisten', 'tcp', '-screen', '0', '1400x900x24', '-displayfd', '67'] stderr: b'_XSERVTransmkdir:
ERROR: euid != 0,directory /tmp/.X11-unix will not be created.
_XSERVTransSocketUNIXCreateListener: mkdir(/tmp/.X11-unix) failed, errno = 2
_XSERVTransMakeAllCOTSServerListeners: failed to …Run Code Online (Sandbox Code Playgroud)