2

我真的很困惑与蟒蛇和硒。我已经在Mac上设置了镀铬和Phantomjs硒,并且它工作正常。硒最好的方式来镀铬无头平行实例python

但是,我只能运行phantomjs作为无头的代码,并且它让代码事情变得非常令人沮丧(对于幻像和铬),这样我才能看到发生了什么。尤其是,因为他们的工作方式不同。

从我的理解有以下两点:

泊坞窗硒 - https://github.com/elgalu/docker-selenium

这使得无头Firefox和Chrome,在使用VNC查看发生了什么。

硒电网延伸 - https://github.com/zalando/zalenium

这允许并行执行。但是,我想知道我是否真的需要这个,因为我已经在单元测试中写了我的并行执行程序了?

从以往的研究我的理解是,硒电网并没有真正的Python工作(其基于Java)

如果有人可以把我直接就用什么将是巨大的。

我想只使用铬无头,希望我仍然可以做我的并行执行单元测试中

回答

1

你混了一堆东西,让我们澄清:

  • PhantomJS是一款使用WebKit渲染引擎(不完全像Chrome)的无头浏览器,它不能运行和UI
  • 您不需要编写两次,您可以从配置文件中获取浏览器名称,并使用接口webdriver来创建您想要的任何浏览器。
  • 如果你想专门运行Chrome headless,试试this,尽管AFAIK目前处于测试阶段,只能在Linux上运行。
  • 并行运行可以通过多种方式实现(docker,grid,测试框架等)。根据你的情况,你应该选择适合你的东西。在你的情况下,我认为码头和网格是一个开销,你应该继续使用单元测试:1.码头确实让你用一个虚拟显示器(无头的种类)运行Chrome,但它的特长是快速扩展,我假设你不需要。 2. Selenium Grid大多用于浏览器,OS矩阵。它并不重要它是基于Java的,因为它是独立服务器您使用任何语言连接到使用remotewebdriver

所以我希望这是

集你直

;)

+0

认真没让我直我的朋友 - 感谢这么多。不知道编码两次,因为发生了什么(当我设置代理和其他一些东西时)是与所使用的驱动程序相关的特定代码是必需的,尤其是在进行错误检查时。此外,Firefox有一些错误,并没有提出错误,因为它应该是(而铬),所以我必须为此创建一堆解决方法。这对我来说是浪费了很多时间,所以我认为我会首先尝试使用docker/grid/chrome headless,如果这样做不起作用,请继续阅读你的铬建议。 –

+1

NP!我不知道如何在Python中做到这一点,但你可以在运行时检查你运行的是哪个浏览器,即使在使用接口的时候..在C#中它会像'if(typeof(driver)== typeof(FirefoxDriver))然后handleSpecificError()'。 – Moshisho

+1

这真的很酷,你是一个宝石Moshisho。这节省了我很多时间。希望你有一个美好的一天:) –