是否可以在 Selenium RC 中隐藏浏览器?

2025-03-14 08:57:00
admin
原创
48
摘要:问题描述:我正在使用 Selenium RC 自动执行一些浏览器操作,但我希望浏览器不可见。这可能吗?怎么做?Selenium Grid 怎么样?我也可以隐藏 Selenium RC 窗口吗?解决方案 1:有以下几种选择:您可以使用 Selenium Grid,这样浏览器就会在完全不同的机器(或虚拟机)上打开...

问题描述:

我正在使用 Selenium RC 自动执行一些浏览器操作,但我希望浏览器不可见。这可能吗?怎么做?Selenium Grid 怎么样?我也可以隐藏 Selenium RC 窗口吗?


解决方案 1:

有以下几种选择:

  • 您可以使用 Selenium Grid,这样浏览器就会在完全不同的机器(或虚拟机)上打开,然后您可以通过 VNC 或远程桌面连接连接到该机器(如果您想查看浏览器)。另外,还有另一种选择:如果您在该远程服务器上运行 Jenkins 前台进程,它可以在桌面上执行您的测试项目。

  • 您可以在 Linux 上的 XVFB 中以“无头”方式运行 Selenium。我从未尝试过这样做,并且怀疑这样做是否真的值得。http ://www.alittlemadness.com/2008/03/05/running-selenium-headless/

  • 您可以将 Selenium RC 包装在 Windows 服务中。http ://support.microsoft.com/kb/137890。不过,Windows 更高版本上的权限限制可能会阻止 Selenium 访问桌面,就像 Windows 2000 允许我们做的那样。

  • 另一个选择是使用 WebDriver HTMLUnitDriver 之类的东西,它不会启动“真实”浏览器。http ://code.google.com/p/webdriver/ 。此外,还有一个 PhantomJS 选项以及您可以使用的“无头 Chrome”。

  • 当然,您也可以选择使用 SauceLabs 等服务,这样您就可以在云中运行测试。测试完成后,您可以观看测试运行的视频。

解决方案 2:

在 Linux 上,您可以在无头(虚拟)显示器中运行 WebDriver 以隐藏浏览器。这可以通过 Xvfb(X 虚拟帧缓冲区)来实现。

您可以使用以下方式直接从 Python 代码控制 Xvfb xvfbwrapper
https://github.com/cgoldberg/xvfbwrapper

无头运行的 Python 代码如下所示:

from selenium import webdriver
from xvfbwrapper import Xvfb

display = Xvfb()
display.start()

# now Firefox will run in a virtual display. 
# you will not see the browser.
driver = webdriver.Firefox()
driver.get('http://www.google.com')

print(driver.title)
driver.quit()

display.stop()

在 Debian/Ubuntu 上安装依赖项:

$ sudo apt-get install xvfb
$ pip install xvfbwrapper

解决方案 3:

我轻松地隐藏了浏览器窗口。

只需安装 PhantomJS。然后,将此行更改为:

driver = webdriver.Firefox()

到:

driver = webdriver.PhantomJS()

其余代码无需更改,也不会打开任何浏览器。出于调试目的,请driver.save_screenshot('screen.png')在代码的不同步骤中使用。

解决方案 4:

+1 将 Selenium RC 作为 Windows 服务。

为了让测试完全隐藏运行,我认为如果您使用的是 Windows,您没有太多解决方案。

我会在你的局域网中专门设置一台电脑,让它一直在线,并运行一个 selenium RC 服务器。这样你就可以使用这台电脑的 IP 而不是本地主机来运行测试。例如:

browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")

(考虑到这是运行服务器的计算机的 IP)。

完成该设置后,您可以在自己的计算机上运行测试,浏览器和 RC 服务器窗口位于另一台计算机上,完成后即可返回到您的计算机。

解决方案 5:

在 Linux 上,您可以在虚拟显示器上运行测试浏览器。您需要xvfb创建虚拟 X 服务器的软件包。在基于 Debian 的发行版上,只需运行

sudo apt-get install xvfb

有一个很好的工具ephemeral-x.sh可以方便地设置任何命令在虚拟显示器上运行。下载并使其可执行:

wget https://raw.github.com/jordansissel/xdotool/master/t/ephemeral-x.sh
chmod +x ephemeral-x.sh

然后您可以简单地使用它来启动 Selenium 服务器:

./ephemeral-x.sh java -jar selenium-standalone.jar

Selenium 创建的所有浏览器窗口现在都将使用虚拟显示,并且对您来说是不可见的。

解决方案 6:

如果你使用的是 Windows,一个选项是使用不同的用户帐户运行测试。这意味着浏览器和 Java 服务器对你的帐户不可见。

解决方案 7:

这就是我在 Linux 桌面(Ubuntu)上使用 Maven 运行测试的方法。我受够了无法使用 Firefox WebDriver 始终占据焦点。

我安装了 xvfb

xvfb-运行-a mvn 全新安装

就是这样

解决方案 8:

在很多情况下,PhantomJS 并不完全适合您的需求,我想详细说明 Dave Hunt 的回答中提到的无头 chrome 选项。

chrome 57 刚刚推出了此功能。您可以通过 ChromeDriver 传递 --headless 标志来使用它,有关更多信息,请参阅此问题中的讨论

解决方案 9:

有一个名为GhostDriver的 PhantomJS 相关项目,旨在使用 webdriver wire JSON 协议在 Selenium Grid 中运行 PhantomJS 实例。这可能就是您正在寻找的,尽管这个问题已经有 4 年了。

解决方案 10:

在 MacOSX 上,我无法隐藏浏览器窗口,但至少我知道如何将其移动到其他显示器,这样就不会对我的工作流程造成太大影响。当 Firefox 正在运行测试时,只需按住 Control 键并单击其在 Dock 中的图标,选择“选项”,然后选择“分配到显示器 2”。

解决方案 11:

curl -k https://gist.githubusercontent.com/terrancesnyder/995250/raw/cdd1f52353bb614a5a016c2e8e77a2afb718f3c3/ephemeral-x.sh -o ~/ephemeral-x.sh
chmod +x ~/ephemeral-x.sh
~/ephemeral-x.sh TestsStarterCommand

顺便说一句,这是任何运行 e2e 的开发人员都需要的功能,从逻辑上讲,这将产生浏览器。在开发环境中,处理不断弹出的窗口很烦人,您可能会意外地与之交互,导致测试失败。

解决方案 12:

使用无头式 Chrome 是你的最佳选择,或者你可以直接在网站上发帖与它互动,这样可以为其他事情/进程节省大量的计算能力。我在测试使用 CPU 密集型元素在多个网站上搜索鞋子的网络自动化机器人时使用了这种方法,你节省的电量越多,程序越简单,就越容易同时运行多个进程,速度和可靠性也更高。

解决方案 13:

要在无头模式下使用 Chrome 运行 Selenium 并确保它使用桌面视图(或者可能使用移动浏览器),请在 ChromeOptions 中设置窗口大小:

options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--window-size=1920,1080')  # Use desktop size
driver = webdriver.Chrome(options=options)
相关推荐
  政府信创国产化的10大政策解读一、信创国产化的背景与意义信创国产化,即信息技术应用创新国产化,是当前中国信息技术领域的一个重要发展方向。其核心在于通过自主研发和创新,实现信息技术应用的自主可控,减少对外部技术的依赖,并规避潜在的技术制裁和风险。随着全球信息技术竞争的加剧,以及某些国家对中国在科技领域的打压,信创国产化显...
工程项目管理   2482  
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   1533  
  PLM(产品生命周期管理)项目对于企业优化产品研发流程、提升产品质量以及增强市场竞争力具有至关重要的意义。然而,在项目推进过程中,范围蔓延是一个常见且棘手的问题,它可能导致项目进度延迟、成本超支以及质量下降等一系列不良后果。因此,有效避免PLM项目范围蔓延成为项目成功的关键因素之一。以下将详细阐述三大管控策略,助力企业...
plm系统   0  
  PLM(产品生命周期管理)项目管理在企业产品研发与管理过程中扮演着至关重要的角色。随着市场竞争的加剧和产品复杂度的提升,PLM项目面临着诸多风险。准确量化风险优先级并采取有效措施应对,是确保项目成功的关键。五维评估矩阵作为一种有效的风险评估工具,能帮助项目管理者全面、系统地评估风险,为决策提供有力支持。五维评估矩阵概述...
免费plm软件   0  
  引言PLM(产品生命周期管理)开发流程对于企业产品的全生命周期管控至关重要。它涵盖了从产品概念设计到退役的各个阶段,直接影响着产品质量、开发周期以及企业的市场竞争力。在当今快速发展的科技环境下,客户对产品质量的要求日益提高,市场竞争也愈发激烈,这就使得优化PLM开发流程成为企业的必然选择。缺陷管理工具和六西格玛方法作为...
plm产品全生命周期管理   0  
热门文章
项目管理软件有哪些?
曾咪二维码

扫码咨询,免费领取项目管理大礼包!

云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用