标签: pyvirtualdisplay

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

我正在尝试使用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)

python xvfb pyvirtualdisplay

5
推荐指数
2
解决办法
3630
查看次数

具有pyvirtualdisplay的Selenium无法定位元素

我有一个使用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 ubuntu selenium pyvirtualdisplay

5
推荐指数
1
解决办法
8596
查看次数

使用Python将selenium chrome实例发送到后台

我正在尝试使用 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

5
推荐指数
1
解决办法
8555
查看次数

由Selenium启动的Firefox忽略了pyvirtualdisplay创建的显示

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

python firefox selenium pyvirtualdisplay

2
推荐指数
1
解决办法
2980
查看次数

我有 PyVirtualDisplay==0.2.5 包的问题,​​用于运行使用虚拟显示器(无头模式)的测试

我的测试按预期工作和运行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 …

python macos selenium headless pyvirtualdisplay

2
推荐指数
1
解决办法
1340
查看次数

pyvirtualdisplay 中的 XStartError

我正在本地计算机上运行同事笔记本(她使用了 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)

python ffmpeg xvfb pyvirtualdisplay

2
推荐指数
1
解决办法
2309
查看次数