我让Chrome通过Selenium服务器无头工作,运行绑定到DISPLAY:10的xvfb
,然后使用DISPLAY=:10 webdriver-manager start
运行Selenium。所以这一切都很好。
我还通过在protractor.conf中指定directConnect: true
直接从量角器运行Chromedriver。
我想做的是两者结合,即。直接运行chromedriver(NO SELENIUM!),但不知何故指示它在DISPLAY上运行无头:10。
在拓扑方面,一切都在开发人员的PC上运行。没有涉及服务器。在下面的评论中,我提到了一个节点服务器:这用于启动量角器而不是从命令行更常见的启动。我想要量角器在DISPLAY上运行:0所以我可以看到它的输出,测试失败等。当它使用chromedriver生成chrome时,我希望chrome在DISPLAY上运行:10。我这样做的原因是我希望chrome窗口比我的物理屏幕更大。有关背景信息,请参阅How can I screenshot the full height of a mobile form factor?。
答案 0 :(得分:2)
我猜测拓扑结构是这样的:
xvfb
,DISPLAY=:10
,Selenium Server,chromedriver DISPLAY=:0
,节点,量角器(directConnect: true
),chromedriver 鉴于DISPLAY
is an environment variable,我不知道它是如何布局的,而不是要传递的参数。
在这种情况下,假设你不想在Box B上安装单独的xvfb
,并且A可以从B到达(加上一个不错的连接),解决方案就是设置:
DISPLAY=boxAHost:10
方框B上的。
如果无法从B访问A,则最简单的方法是只复制A和B上的xvfb
设置,并且两者都有DISPLAY=:10
。
答案 1 :(得分:2)
我有一个“Doh !!!”禅的时刻和整个事情我认为会更容易。
我把节点/量角器的stdout(我想要在我的屏幕上)与Chrome的X显示混合在一起(我想在DISPLAY:10上无头)。当然他们完全不同!!!!
简单地在量角器前加上DISPLAY =:10例如
DISPLAY=:10 protractor /installation_test/conf-c-direct-noserver.js
或者,在我的情况下,因为我正在运行一个节点服务器,而这个服务器反过来会产生量角器,...
DISPLAY=:10 npm start
因此量角器在我的终端中运行,我可以观看标准输出,而DISPLAY =:10则通过调用层继承,最终被Chrome看到并理解。