运行 docker 上带有 selenium 网格的 browsermob
Running browsermob with selenium grid on docker
我正在使用 browsermob 的 python 客户端来记录我的 selenium 测试的流量。 Selenium 网格位于 docker 容器中,其中包含 chrome 和 firefox 的图像。我似乎无法正确配置 docker 图像以连接到代理和网格。
这是我用来创建代理和远程 Web 驱动程序的代码:
server = browsermobproxy.Server('mylocalpathtobrowsermobbin')
server.start()
proxy = server.create_proxy()
proxy.new_har()
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities={
'browserName': 'chrome',
'chromeOptions': {
'args': ["--proxy-server={}".format(proxy.proxy)]}
})
这是我的 docker-compose 文件:
hub:
image: selenium/hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome-debug
volumes:
- /dev/shm:/dev/shm
links:
- hub
ports:
- "5900:5900"
我是 docker 的新手,我知道我需要公开代理用于连接的端口,但我无法让它工作。感谢任何帮助,谢谢!
你也必须在容器中提高 BMP。然后link它加上一个网格。检查此 article 以获得想法和关键实现/配置点。
根据谢尔盖的回答回答我自己的问题:
我将 browsermob-proxy 图像推送到 docker hub:
https://hub.docker.com/r/spothero/browsermob-proxy/
从此存储库创建:
https://github.com/sskorol/docker-browsermob-proxy
docker 文件的所有功劳都归谢尔盖所有。
我的 docker 撰写文件:
hub:
image: selenium/hub
ports:
- "4444:4444"
firefox:
image: selenium/node-firefox
links:
- hub
chrome:
image: selenium/node-chrome-debug
volumes:
- /dev/shm:/dev/shm
links:
- hub
ports:
- "5900:5900"
browsermobproxy:
image: spothero/browsermob-proxy:1.0.0
ports:
- "9090-9191:9090-9191"
expose:
- "9090-9191"
links:
- hub
- firefox
- chrome
在 jenkins 作业中我有一个 shell 步骤:
#!/bin/bash
docker-compose up -d --force-recreate
sleep 10s
PROXY_IP_ADDRESS="$(docker inspect --format {{.NetworkSettings.IPAddress}} browsermobproxy_1)"
export BROWSERMOB_CONTAINER_HOST=$PROXY_IP_ADDRESS
我使用环境变量将主机传递给我的测试代码。
这是使用代理初始化 webdriver 的代码:
import browsermobproxy
self.client = browsermobproxy.Client('localhost:9090')
self.driver = webdriver.Remote(
command_executor=settings.SELENIUM_GRID_HUB,
desired_capabilities={
'browserName': 'chrome',
'chromeOptions': {
'args': ["--proxy-server={}".format(
os.environ.get('BROWSERMOB_CONTAINER_HOST'), self.client.port)]
}
})
希望对您有所帮助!
我正在使用 browsermob 的 python 客户端来记录我的 selenium 测试的流量。 Selenium 网格位于 docker 容器中,其中包含 chrome 和 firefox 的图像。我似乎无法正确配置 docker 图像以连接到代理和网格。 这是我用来创建代理和远程 Web 驱动程序的代码:
server = browsermobproxy.Server('mylocalpathtobrowsermobbin')
server.start()
proxy = server.create_proxy()
proxy.new_har()
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities={
'browserName': 'chrome',
'chromeOptions': {
'args': ["--proxy-server={}".format(proxy.proxy)]}
})
这是我的 docker-compose 文件:
hub: image: selenium/hub ports: - "4444:4444" chrome: image: selenium/node-chrome-debug volumes: - /dev/shm:/dev/shm links: - hub ports: - "5900:5900"
我是 docker 的新手,我知道我需要公开代理用于连接的端口,但我无法让它工作。感谢任何帮助,谢谢!
你也必须在容器中提高 BMP。然后link它加上一个网格。检查此 article 以获得想法和关键实现/配置点。
根据谢尔盖的回答回答我自己的问题: 我将 browsermob-proxy 图像推送到 docker hub: https://hub.docker.com/r/spothero/browsermob-proxy/
从此存储库创建: https://github.com/sskorol/docker-browsermob-proxy
docker 文件的所有功劳都归谢尔盖所有。
我的 docker 撰写文件:
hub: image: selenium/hub ports: - "4444:4444" firefox: image: selenium/node-firefox links: - hub chrome: image: selenium/node-chrome-debug volumes: - /dev/shm:/dev/shm links: - hub ports: - "5900:5900" browsermobproxy: image: spothero/browsermob-proxy:1.0.0 ports: - "9090-9191:9090-9191" expose: - "9090-9191" links: - hub - firefox - chrome
在 jenkins 作业中我有一个 shell 步骤:
#!/bin/bash docker-compose up -d --force-recreate sleep 10s PROXY_IP_ADDRESS="$(docker inspect --format {{.NetworkSettings.IPAddress}} browsermobproxy_1)" export BROWSERMOB_CONTAINER_HOST=$PROXY_IP_ADDRESS
我使用环境变量将主机传递给我的测试代码。 这是使用代理初始化 webdriver 的代码:
import browsermobproxy
self.client = browsermobproxy.Client('localhost:9090')
self.driver = webdriver.Remote(
command_executor=settings.SELENIUM_GRID_HUB,
desired_capabilities={
'browserName': 'chrome',
'chromeOptions': {
'args': ["--proxy-server={}".format(
os.environ.get('BROWSERMOB_CONTAINER_HOST'), self.client.port)]
}
})
希望对您有所帮助!