Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Selenium是chrome无头并行实例python的最佳方式_Python_Selenium_Python Unittest_Headless Browser_Selenium Grid2 - Fatal编程技术网

Selenium是chrome无头并行实例python的最佳方式

Selenium是chrome无头并行实例python的最佳方式,python,selenium,python-unittest,headless-browser,selenium-grid2,Python,Selenium,Python Unittest,Headless Browser,Selenium Grid2,我对python和selenium感到非常困惑。我已经在mac上安装了带有selenium的chrome和Phantomjs,并且运行正常 然而,我只能将phantomjs作为headless运行,而且必须编写两次代码(对于phantomjs和chrome),这样我才能看到正在发生的事情,这真的令人沮丧。特别是,因为它们的工作方式完全不同 据我所知,有两件事: 多克硒- 这使得无头firefox和chrome可以使用VNC查看正在发生的事情 硒网格扩展- 这允许并行执行。然而,我想知道,既然我已

我对python和selenium感到非常困惑。我已经在mac上安装了带有selenium的chrome和Phantomjs,并且运行正常

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

据我所知,有两件事:

多克硒-

这使得无头firefox和chrome可以使用VNC查看正在发生的事情

硒网格扩展-

这允许并行执行。然而,我想知道,既然我已经在unittest中编写了并行执行例程,我真的需要这个吗

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

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


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

您混合了很多东西,让我们澄清一下:

  • PhantomJS是一款无头浏览器,它使用WebKit渲染引擎(与Chrome不完全一样),无法使用UI运行
  • 您不需要编写两次代码,您可以从配置文件中获取浏览器名称,并使用界面
    webdriver
    创建所需的浏览器
  • 如果你想运行专门的Chrome headless,试试看,尽管它还处于测试阶段,而且只在Linux上运行
  • 并行运行可以通过多种方式实现(docker、网格、测试框架等)。根据你的情况,你应该选择适合你的。在您的例子中,我认为docker和网格是一种开销,您应该继续使用unittest:1。Docker确实允许您使用虚拟显示器(有点无头)运行Chrome,但它的特点是扩展速度快,我想您不需要2。Selenium Grid主要用于浏览器、操作系统矩阵。基于Java并不重要,因为它是一个独立的服务器,您可以使用任何语言连接到它
所以我希望是

让你明白


)()

我的朋友,真的让我改邪归正了——非常感谢。不确定是否需要两位编码,因为对我来说(当我设置代理和其他一些事情时),与正在使用的驱动程序相关的特定代码是必要的,特别是在进行错误检查时。另外,firefox有一些bug,并没有像它应该的那样引发错误(而chrome却有),所以我必须为此创建一系列解决方法。这对我来说在mo上浪费了很多时间,所以我想我会先尝试docker/grid/chrome headless,如果这不起作用,就去你的chrome suggestion.NP!我不知道如何在python中实现这一点,但您可以在运行时检查正在运行的浏览器,即使在使用界面时也是如此。。在C中,如果(typeof(driver)==typeof(FirefoxDriver)),那么handleSpecificError()就有点像
。这真的很酷,你是一个宝石级的摩梭人。这节省了我很多时间。希望你有一个伟大的一天:)谢谢你的朋友!你也是;)