如何在不使用Selenium服务器

时间:2016-02-19 10:13:46

标签: selenium selenium-webdriver protractor selenium-chromedriver

我让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?

2 个答案:

答案 0 :(得分:2)

我猜测拓扑结构是这样的:

  • 方框A:xvfbDISPLAY=:10,Selenium Server,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

答案 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看到并理解。