如何在不使用 Selenium 服务器的情况下从量角器 运行 Chrome 无头
How can I run Chrome headless from protractor WITHOUT using a Selenium server
我 Chrome 通过 Selenium 服务器无头工作,通过 运行ning xvfb
绑定到 DISPLAY:10 然后 运行ning Selenium 与 DISPLAY=:10 webdriver-manager start
。所以这一切都很好。
我还通过在我的 protractor.conf.
中指定 directConnect: true
直接从量角器获得 Chrome 驱动程序 运行ning
我想做的是将两者结合起来,即。 运行 chrome直接驱动(没有 SELENIUM!),但不知何故指示它 运行 无头显示:10。
就拓扑而言,一切都在开发者的 PC 上 运行。没有涉及服务器。在下面的评论中,我提到了一个节点服务器:它被用来启动量角器,而不是更常见的从命令行启动。我希望量角器在 DISPLAY:0 上 运行ning 以便我可以看到它的输出、测试失败等。当它使用 chrome 驱动程序生成 chrome 时,我想要 chrome 运行宁 DISPLAY:10。我这样做的原因是我希望 chrome window 比我的物理屏幕大。请参阅 了解背景信息。
我猜拓扑是这样的:
- 方框 A:
xvfb
、DISPLAY=:10
、Selenium 服务器、chromedriver
- B框:
DISPLAY=:0
,节点,量角器(directConnect: true
),chromedriver
- C 框:测试运行程序。
鉴于 DISPLAY
is an environment variable,不是要传递的参数,我不知道它还能如何布局。
在这种情况下,假设您不想在 Box B 上安装单独的 xvfb
,并且 A 可以从 B 访问(加上良好的连接),解决方案只需设置:
DISPLAY=boxAHost:10
在方框 B 上。
如果无法从 B 访问 A,最简单的方法可能是在 A 和 B 上复制 xvfb
设置,并在两者上设置 DISPLAY=:10
。
我有一个 "Doh!!!" 的禅宗时刻,整个事情比我想象的要容易得多。
我将 node/protractor 的标准输出(我希望在我的屏幕上显示)与 chrome 的 X 显示(我希望在 DISPLAY:10 上无显示)混为一谈。他们当然是完全不同的!!!!
只需在量角器前加上 DISPLAY=:10 的前缀,例如
DISPLAY=:10 protractor /installation_test/conf-c-direct-noserver.js
或者,在我的例子中,因为我是 运行 一个节点服务器,它反过来生成量角器,...
DISPLAY=:10 npm start
所以量角器在我的终端运行,我可以看到标准输出,而 DISPLAY=:10 通过调用层向下继承,最终被 Chrome 看到和理解。
我 Chrome 通过 Selenium 服务器无头工作,通过 运行ning xvfb
绑定到 DISPLAY:10 然后 运行ning Selenium 与 DISPLAY=:10 webdriver-manager start
。所以这一切都很好。
我还通过在我的 protractor.conf.
中指定directConnect: true
直接从量角器获得 Chrome 驱动程序 运行ning
我想做的是将两者结合起来,即。 运行 chrome直接驱动(没有 SELENIUM!),但不知何故指示它 运行 无头显示:10。
就拓扑而言,一切都在开发者的 PC 上 运行。没有涉及服务器。在下面的评论中,我提到了一个节点服务器:它被用来启动量角器,而不是更常见的从命令行启动。我希望量角器在 DISPLAY:0 上 运行ning 以便我可以看到它的输出、测试失败等。当它使用 chrome 驱动程序生成 chrome 时,我想要 chrome 运行宁 DISPLAY:10。我这样做的原因是我希望 chrome window 比我的物理屏幕大。请参阅
我猜拓扑是这样的:
- 方框 A:
xvfb
、DISPLAY=:10
、Selenium 服务器、chromedriver - B框:
DISPLAY=:0
,节点,量角器(directConnect: true
),chromedriver - C 框:测试运行程序。
鉴于 DISPLAY
is an environment variable,不是要传递的参数,我不知道它还能如何布局。
在这种情况下,假设您不想在 Box B 上安装单独的 xvfb
,并且 A 可以从 B 访问(加上良好的连接),解决方案只需设置:
DISPLAY=boxAHost:10
在方框 B 上。
如果无法从 B 访问 A,最简单的方法可能是在 A 和 B 上复制 xvfb
设置,并在两者上设置 DISPLAY=:10
。
我有一个 "Doh!!!" 的禅宗时刻,整个事情比我想象的要容易得多。
我将 node/protractor 的标准输出(我希望在我的屏幕上显示)与 chrome 的 X 显示(我希望在 DISPLAY:10 上无显示)混为一谈。他们当然是完全不同的!!!!
只需在量角器前加上 DISPLAY=:10 的前缀,例如
DISPLAY=:10 protractor /installation_test/conf-c-direct-noserver.js
或者,在我的例子中,因为我是 运行 一个节点服务器,它反过来生成量角器,...
DISPLAY=:10 npm start
所以量角器在我的终端运行,我可以看到标准输出,而 DISPLAY=:10 通过调用层向下继承,最终被 Chrome 看到和理解。