Selenium RC中可以隐藏浏览器吗?

我使用Selenium RC来自动执行一些浏览器操作,但我希望浏览器不可见。 这可能吗? 怎么样? selenium网格呢? 我可以隐藏Selenium RC窗口吗?

有几个选项:

  • 您可以使用Selenium Grid,以便在完全不同的计算机(或虚拟机)上打开浏览器,然后可以通过VNC或远程桌面连接连接到浏览器。 此外,另一个选项是:如果您在该远程服务器上运行Jenkins前台进程,则可以在桌面上执行您的testing项目。

  • 你可以在XVFB的Linux上运行Selenium'headless'。 我从来没有尝试过这样做,并怀疑这是非常值得的。 http://www.alittlemadness.com/2008/03/05/running-selenium-headless/

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

  • 另一个select是使用像WebDriver HTMLUnitDriver,它不会启动一个“真正的”浏览器。 http://code.google.com/p/webdriver/ 。 还有一个PhantomJS选项,以及一个“无头的Chrome”,你可以使用。

  • 当然,也可以select使用像SauceLabs这样的服务,在那里你可以让你的testing在云端运行。 testing完成后,您可以观看正在运行的video。

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

您可以使用xvfbwrapper从Python代码直接控制Xvfb: 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 

我很容易设法隐藏浏览器窗口。

只需安装PhantomJS 。 然后,改变这一行:

 driver = webdriver.Firefox() 

至:

 driver = webdriver.PhantomJS() 

其余的代码将不需要更改,也不会打开浏览器。 为了进行debugging,请在代码的不同步骤使用driver.save_screenshot('screen.png')

Selenium RC的+1作为Windows服务。

为了让testing完全隐藏起来,我认为如果你在windows上,你没有太多的解决scheme。

我会这样做,使您的局域网内的计算机一直处于联机状态,并运行一个seleniumRC服务器。 所以你用这台计算机的IP而不是localhost来运行你的testing。 例如:

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

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

有了这个设置,你在电脑上运行你的testing,浏览器和RC服务器窗口在另一台电脑上,一旦完成就返回给你。

在Linux上,您可以在虚拟显示器上运行testing浏览器。 您将需要用于创build虚拟X服务器的xvfb软件包。 在基于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创build的浏览器窗口现在都将使用虚拟显示,并且对您来说是不可见的。

如果你在Windows上,一个选项是在不同的用户帐户下运行testing 。 这意味着浏览器和Java服务器将不会显示给您自己的帐户。

这是我在Linux桌面(Ubuntu)上运行maven的testing。 我厌倦了不能与Firefox的webdriver总是工作重点。

我安装了xvfb

xvfb-run -a mvn clean install

而已

有一个PhantomJS相关的项目名为GhostDriver ,这意味着使用webdriver wire JSON协议在Selenium Grid中运行PhantomJS实例。 这可能是你正在寻找的,虽然这个问题现在是4岁。

在MacOSX上,我一直无法隐藏浏览器窗口,但至less我想出了如何将它移动到不同的显示器,所以它不会中断我的工作stream程。 当Firefox正在运行testing时,只需按住控制面板中的图标,select选项,并指定显示2。

 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所需的function,逻辑上会产生浏览器。 在开发环境中,处理不断popup的窗口以及可能无意中互相影响testing失败的窗口很烦人。

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

铬57刚推出这个function。 您可以通过ChromeDriver传递–headless标志来使用它,更多信息请参阅这个问题的讨论