我正在使用Selenium RC自动执行某些浏览器操作,但我希望浏览器不可见.这可能吗?怎么样?那么Selenium Grid呢?我也可以隐藏Selenium RC窗口吗?
有几个选择:
您可以使用Selenium Grid,以便在完全不同的计算机(或虚拟机)上打开浏览器,然后如果要查看浏览器,则可以通过VNC或远程桌面连接进行连接.另外,另一个选择是:如果在该远程服务器上运行Jenkins前台进程,它可以在桌面上执行您的测试项目.
你可以在XVFB的Linux上运行Selenium'headless'.我从来没有尝试过这样做,并怀疑这是值得的.http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
您可以在Windows服务中包装Selenium RC.http://support.microsoft.com/kb/137890.除了对更高版本的Windows的权限限制可能会阻止Selenium访问桌面,就像Windows 2000曾经允许我们这样做.
另一个选择是使用像WebDriver HTMLUnitDriver这样的东西,它不会启动"真正的"浏览器.http://code.google.com/p/webdriver/ .还有一个PhantomJS选项以及你可以使用的"无头Chrome".
当然,也可以选择使用像SauceLabs这样的服务,在那里你可以让你的测试在云端运行.测试完成后,您可以观看他们正在运行的视频.
在Linux上,您可以在无头(虚拟)显示中运行WebDriver来隐藏浏览器.这可以使用Xvfb(X虚拟帧缓冲区)来完成.
您可以使用xvfbwrapper
以下命令直接从Python代码控制Xvfb :https:
//github.com/cgoldberg/xvfbwrapper
运行headless的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()
其余代码不需要更改,也不会打开任何浏览器.出于调试目的,请driver.save_screenshot('screen.png')
在代码的不同步骤中使用.
作为Windows服务,Selenium RC为+1.
为了让测试完全隐藏,我认为如果你在Windows上,你没有太多的解决方案.
我要做的就是让你的局域网中的计算机一直在线,并运行selenium RC服务器.因此,您使用该计算机的IP而不是localhost来运行测试.例如:
browser = selenium("10.15.12.34",4444,"*firefox","http://saucelabs.com")
(考虑到这是运行服务器的计算机的ip).
进行该设置后,您可以在计算机中运行测试,浏览器和RC服务器窗口位于另一台计算机中,并在完成后返回到您的计算机.
在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创建的所有浏览器窗口现在都将使用虚拟显示,并且对您来说是不可见的.