我正在使用Selenium RC自动执行一些浏览器操作,但我希望浏览器不可见。这可能吗?怎么样?硒网格呢?我也可以隐藏Selenium RC窗口吗?
我正在使用Selenium RC自动执行一些浏览器操作,但我希望浏览器不可见。这可能吗?怎么样?硒网格呢?我也可以隐藏Selenium RC窗口吗?
Answers:
有几种选择:
您可以使用Selenium Grid,以便在完全不同的计算机(或虚拟机)上打开浏览器,然后如果您想查看浏览器,则可以通过VNC或远程桌面连接连接到该计算机。另外,还有一个选择:如果您在该远程服务器上运行Jenkins前台进程,则它可以在桌面上执行测试项目。
您可以在XVFB中的Linux上“无头运行” Selenium。我从未尝试过这样做,并且怀疑这样做是否值得。http://www.alittlemadness.com/2008/03/05/running-selenium-headless/
您可以将Selenium RC包装在Windows服务中。http://support.microsoft.com/kb/137890。除了对更高版本的Windows的权限限制之外,Selenium可能会阻止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
用于无头运行的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')
在代码的不同步骤中使用。
driver = webdriver.PhantomJS(r"C:\\phantomjs\phantomjs.exe")
在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创建的所有浏览器窗口现在都将使用虚拟显示,并且对您不可见。
如果您使用的是Windows,则一种选择是使用其他用户帐户运行测试。这意味着您自己的帐户将看不到浏览器和Java服务器。
这就是我在Linux桌面(Ubuntu)上使用Maven运行测试的方式。我受够了无法始终专注于firefox webdriver的工作。
我安装了xvfb
xvfb-run -a mvn全新安装
而已
有一个与PhantomJS相关的项目,称为 GhostDriver,该旨在使用Webdriver Wire JSON协议在Selenium Grid中运行PhantomJS实例。尽管这个问题已有4年的历史了,但这可能正是您要寻找的东西。
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的开发人员都需要的功能,该功能从逻辑上将产生浏览器。在开发环境中,处理不断弹出的窗口很烦人,您可能会不小心进行交互以使测试失败。