【问题标题】:Selenium grid sessions not appliedSelenium 网格会话未应用
【发布时间】:2018-01-20 15:08:21
【问题描述】:

我在我的电脑上使用 Selenium stanalone + Chrome headless + PHP + UwAmp server 来解析一些数据(系统: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 中进行更改,但没有成功。这些是设置:

编辑:my php.ini file

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

【问题讨论】:

  • IMO,您的 CPU Usage 是 100%,这就是仅产生 2、4 或 8 个活动会话的原因。将您的Test Environment 转换为具有充足硬件的Test Lab 以支持您的Hardware Requirement
  • 我在 Intel I7 处理器、16GB RAM 的电脑上测试过,同样的事情发生了......
  • 您确定要在tearDown() 中调用quit() 以摆脱陈旧的webdriver 和webbrowser 实例吗?你能分享你的代码块吗?
  • 是的,在我调用的每个 PHP 脚本的末尾:$session->deleteAllCookies(); $session->close();

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


【解决方案1】:

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

我正在使用 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=')。

也许还有一些其他的解决方案,我不知道......

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

解决方案:

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 中进行一些更改才能使其正常工作。

【讨论】:

    猜你喜欢
    • 2015-05-30
    • 2016-10-02
    • 2018-01-16
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多