未应用Selenium网格会话

时间:2018-01-20 15:08:21

标签: php selenium-webdriver html-parsing selenium-grid google-chrome-headless

我在计算机上使用 Selenium stanalone + Chrome headless + PHP + UwAmp服务器来解析一些数据(系统:WIN7_32bit,4GB RAM)。

我需要同时启动22个Chrome会话,所以我在这个设置中使用了selenium网格:

java -jar selenium-server-standalone-2.53.1.jar -role hub
java -jar selenium-server-standalone-2.53.1.jar -role node -hub http://localhost:4444/grid/register -browser "browserName=chrome,maxInstances=22,seleniumProtocol=WebDriver" -maxSession 22

我的问题是主要启动6个会话(图片上的示例)...有时会有2个或4个活动会话。我究竟做错了什么?我尝试在php.ini中进行更改,但没有成功。这些是设置:

settings

sessions

编辑:my php.ini file

EDIT2:同样的事情发生在其他工作站(WIN10_64bit,Intel i7,16GB RAM)上,我认为这个问题与UwAmp服务器设置或selenium-server-standalone-2.53.1.jar有关,或者谷歌浏览器。

1 个答案:

答案 0 :(得分:0)

浏览器连接限制 - 这就是问题所在。

我正在使用PHP(服务器端语言),我需要以某种方式执行我的PHP脚本。解决方案是一些本地服务器(如uWamp)和一些在该服务器上打开脚本的Web浏览器。由于我需要启动22个脚本,同时我用这个地址打开22个浏览器标签:

http://localhost/selenium/PHPWebDriver/1.php
http://localhost/selenium/PHPWebDriver/2.php
....
http://localhost/selenium/PHPWebDriver/22.php

现在,Chrome限制使用相同域名的HTTP连接数。此限制在HTTP规范(RFC2616)中定义,大多数现代浏览器允许每个域仅六个连接(Opera,Safari,Chrome,Firefox ......)!

因此,绕过浏览器限制的方法是:

  1. 如果可能(Firefox)更改浏览器限制,而不是Chrome
  2. 下载浏览器资源并重建它们(如Chromium),
  3. 提供多个子域名,
  4. 为每个脚本制作用户个人资料(Chrome的参数:' - user-data-dir =')。
  5. 也许有其他一些解决方案,我不知道......

    我决定继续使用选项3,因为我无法在Chrome中更改限制。

    <强> SOLUTION:

    1)使用记事本

    打开C:\ Windows \ System32 \ drivers \ etc \ hosts

    2)为每个子域添加以下行到hosts文件的底部:

    127.0.0.1       localhost
    127.0.0.1       localhost2
    127.0.0.1       localhost3
    127.0.0.1       localhost4
    

    (我必须添加4个子域,因为在每个子域上我只能执行6个脚本)

    现在你可以开始了:

    http://localhost/selenium/PHPWebDriver/1.php
    ...
    http://localhost/selenium/PHPWebDriver/6.php
    
    
    http://localhost2/selenium/PHPWebDriver/7.php
    ...
    http://localhost2/selenium/PHPWebDriver/13.php
    
    
    http://localhost3/selenium/PHPWebDriver/14.php
    ...etc...
    

    就是这样。请注意,在某些服务器上,您可能需要在Apache httpd-vhosts.conf中进行一些更改才能使其正常工作。

    Working!!!