【问题标题】:Selenium best way to chrome headless parallel instances pythonSelenium 镀铬无头并行实例 python 的最佳方法
【发布时间】:2017-08-05 00:39:16
【问题描述】:

我对 python 和 selenium 感到非常困惑。我已经在 mac 上使用 selenium 设置了 chrome 和 Phantomjs,它工作正常。

但是,我只能将 phantomjs 作为 headless 运行,而且必须编写两次代码(对于 phantom 和 chrome)真的很令人沮丧,这样我才能看到正在发生的事情。特别是,因为它们的工作方式完全不同。

据我了解有以下两点:

Docker 硒 - https://github.com/elgalu/docker-selenium

这允许无头 firefox 和 chrome,使用 VNC 来查看正在发生的事情。

Selenium 网格扩展 - https://github.com/zalando/zalenium

这允许并行执行。但是,我想知道我真的需要这个吗,因为我已经在 unittest 中编写了并行执行例程?

根据之前的研究,我的理解是 selenium 网格并不真正适用于 Python(它基于 java)

如果有人能直接告诉我该使用什么,那就太好了。

我正在考虑只使用 chrome headless,希望我仍然能够在 unittest 中进行并行执行

【问题讨论】:

    标签: python selenium python-unittest headless-browser selenium-grid2


    【解决方案1】:

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

    • PhantomJS 是一种无头浏览器,它使用 WebKit 渲染引擎(与 Chrome 不完全相同),它无法使用 UI 运行。
    • 您无需编写两次代码,您可以从配置文件中获取浏览器名称并使用接口webdriver 来创建您想要的任何浏览器。
    • 如果您想专门运行无头 Chrome,请尝试this,尽管 AFAIK 处于测试阶段且仅在 Linux 上。
    • 可以通过多种方式(docker、grid、测试框架等)实现并行运行。根据你的情况,你应该选择适合你的。在您的情况下,我认为 docker 和网格是开销,您应该继续使用 unittest: 1。 Docker 确实让您可以使用虚拟显示器(有点无头)运行 Chrome,但它的专长是快速扩展,我认为您不需要。 2。 Selenium Grid 主要用于浏览器、OS 矩阵。 没关系它是基于 Java 的,因为它是独立的服务器,您可以使用任何语言使用 remotewebdriver 进行连接。

    所以我希望它是

    让你直截了当

    ;)

    【讨论】:

    • 真的让我的朋友直截了当 - 非常感谢。不确定编码两次,因为对我来说(当我设置代理和其他一些东西时)发生的事情是与正在使用的驱动程序相关的特定代码是必要的,尤其是在错误检查时。此外,firefox 有一些错误并且没有像它应该的那样引发错误(而 chrome 确实如此),所以我必须为此创建一堆解决方法。在 mo 上浪费了我很多时间,所以我想我会先尝试 docker/grid/chrome headless,然后如果这不起作用,请继续您的 chromium 建议。
    • NP!我不确定如何在 python 中执行此操作,但您可以在运行时检查您正在运行的浏览器,即使在使用接口时也是如此。在 C# 中,它将类似于if (typeof(driver)==typeof(FirefoxDriver)) then handleSpecificError()
    • 这真的很酷,你是一颗宝石 Moshisho。这为我节省了很多时间。希望你有一个美好的一天:)
    • 谢谢伙计!你也是;)
    猜你喜欢
    • 2017-12-23
    • 1970-01-01
    • 2017-05-07
    • 2019-12-12
    • 2018-01-02
    • 2018-10-11
    • 2018-04-23
    • 2015-02-14
    • 1970-01-01
    相关资源
    最近更新 更多