在Selenium RC中可以隐藏浏览器吗?
我正在使用Selenium RC来自动化一些浏览器操作,但我希望浏览器是看不见的。这可能吗?怎么做?那Selenium Grid呢?我能把Selenium RC的窗口也隐藏起来吗?
13 个回答
我很轻松地把浏览器窗口隐藏起来了。
只需要安装 PhantomJS。然后,把这一行改成:
driver = webdriver.Firefox()
改成:
driver = webdriver.PhantomJS()
你其他的代码就不需要改动了,这样就不会打开浏览器了。为了调试方便,可以在代码的不同步骤使用 driver.save_screenshot('screen.png')
来保存屏幕截图。
在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
这里有几个选择:
你可以使用Selenium Grid,这样浏览器就可以在另一台完全不同的机器(或者虚拟机)上打开。如果你想看到浏览器的界面,可以通过VNC或者远程桌面连接到那台机器。另外一个选择是,如果你在那台远程服务器上运行Jenkins的前台进程,它可以在桌面上执行你的测试项目。
你可以在Linux上用无头模式运行Selenium,使用XVFB。我自己没有尝试过这个,觉得可能不太值得去做。 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这样的服务,在云端运行你的测试。测试完成后,你可以观看它们运行的视频。