我在计算机上使用 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中进行更改,但没有成功。这些是设置:
EDIT2:同样的事情发生在其他工作站(WIN10_64bit,Intel i7,16GB RAM)上,我认为这个问题与UwAmp服务器设置或selenium-server-standalone-2.53.1.jar有关,或者谷歌浏览器。
答案 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 ......)!
因此,绕过浏览器限制的方法是:
也许有其他一些解决方案,我不知道......
我决定继续使用选项3,因为我无法在Chrome中更改限制。
<强> SOLUTION:强>
1)使用记事本
打开C:\ Windows \ System32 \ drivers \ etc \ hosts2)为每个子域添加以下行到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中进行一些更改才能使其正常工作。