Selenium是否可以在没有GUI的Ubuntu上运行

我在各种云平台(如Amazon AWS和Cloud 9)上使用Codeception。默认情况下,它们都不具有GUI。 我的问题是,你可以在这种types的系统上运行Selenium吗? 或者我需要以某种方式获得一个graphics用户界面?

seleniumium只是一个图书馆,因此,如果您在配备了GUI的系统上运行,seleniumium并不特别在意。 你可能会问的是:如果我使用seleniumium来打开浏览器,那么浏览器将在没有GUI的系统上工作。 答案是:这取决于!

有无头的浏览器:也没有GUI组件的浏览器。 HtmlUnit与seleniumium一起打包。 另一个流行的浏览器是PhantomJS ,它有第三方的seleniumium绑定库叫GhostDriver 。 我个人会避免这两个 ! HtmlUnit使用JavaScript引擎,目前的桌面浏览器都不支持,因此测试不是很可靠。 GhostDriver并没有维持2年 ,因此也导致了不可靠的结果。 PahntomJS绝对是一种选择,因为它使用WebKit – Safari和Chrome浏览器中的引擎,但是您必须编写自己的API 。

大多数系统将允许你有一个虚拟的GUI。 你提到了Ubuntu,这是一个Debian衍生产品。 在网上有几个教程,告诉你如何安装Xvfb,其中大部分是不完整的或错误的。 在Debian上,你安装一个像这样的无头浏览器:

  1. 安装Xvfb: apt-get install xvfb
  2. 安装浏览器。 假设你正在使用Debian服务器,你将无法使用apt-get来安装类似Firefox的东西,因为这些版本库不存在。 相反,谷歌的东西,如“Firefox离线安装”,或任何浏览器,你想使用,然后使用wget在你的服务器上抓包。
  3. 将包解压到/usr/local/lib类的/usr/local/lib ,然后创建一个从/usr/local/bin到启动浏览器的二进制文件的软链接。
  4. 现在尝试启动您的浏览器无头。 例如,对于Firefox,您可以尝试: xvfb-run firefox 。 这可能会产生一些错误,您必须修复。 在我的情况下,我错过了libdbus-glib-1-2库,我可以使用apt-get来安装它。
  5. 此时您需要在运行seleniumium测试之前启动Xvfb。 大多数CI服务器都有一个用于Xvfb的插件,也可以从命令行执行: Xvfb :99 & 。 有关更多信息,请参阅文档 。