Selenium Grid 4增加了一个动态节点功能,可以通过一个node网关容器,根据queue需求动态的创建和清空容器。
目前测试下来,node的数量取决于CPU主机的数量,例如8核CPU,那么node网关的可用配额最高就是8个浏览器实例。
尝试根据官网的配置方式,没有办法成功运行node网关容器,查看log后,是服务器连接错误,具体出错信息如下
1 |
Caused by: org.openqa.selenium.docker.DockerException: Unable to reach the Docker daemon at http://host.docker.internal:2375 |
根据这篇文章中的设置方式设置 url = "unix:///var/run/docker.sock" 后可以正常访问。
但是动态节点有一个缺点,就是当没有可用节点的时候,第一个请求会非常耗时。
另外,由于有一个需求是访问的网站不上代理非常的慢,所以找了下使用命令设置chrome代理的方法,这里以http代理举例
1 2 3 4 5 6 7 8 9 10 |
use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Chrome\ChromeOptions; $serverUrl = 'your-selenium-grid-server-address-and-port'; $chromeOptions = new ChromeOptions(); $chromeOptions->addArguments(['--proxy-server=http://your-http-proxy-server-address-and-port']); $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY_W3C, $chromeOptions); $driver = RemoteWebDriver::create($serverUrl, $capabilities); |
Selenium的兼容性还是非常不错的,缺点是延时有些严重,经常会导致代码超时。
There are no comments yet