在docker上运行selenium grid浏览器
我正在使用browsermob的Python客户端来logging我的seleniumtestingstream量。 selenium网格是在一个docker的容器与铬和Firefox的图像。 我似乎不能正确configuration泊坞窗图像连接到代理和网格。 以下是我用来创build代理和远程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文件:
枢纽: 图像:selenium/枢纽 端口: - “4444:4444” 铬: 图像:selenium/节点铬debugging 卷: - / dev / shm:/ dev / shm 链接: - 枢纽 端口: - “5900:5900”
我是新来的docker,我明白,我需要公开代理用来连接的端口,但我不能得到它的工作。 任何帮助表示赞赏,谢谢!
您还必须在容器中提升BMP。 然后将其与网格链接。 检查这篇文章得到想法和关键实施或configuration点。
根据Sergey的回答回答我自己的问题:我将browsermob-proxy映像推送到docker hub: https ://hub.docker.com/r/spothero/browsermob-proxy/
从这个存储库创build: https : //github.com/sskorol/docker-browsermob-proxy
所有的信贷去塞维利亚docker文件。
我的docker撰写文件:
枢纽: 图像:selenium/枢纽 端口: - “4444:4444” 火狐: 图像:selenium/节点的Firefox 链接: - 枢纽 铬: 图像:selenium/节点铬debugging 卷: - / dev / shm:/ dev / shm 链接: - 枢纽 端口: - “5900:5900” browsermobproxy: image:spothero / browsermob-proxy:1.0.0 端口: - “9090-9191:9090-9191” 暴露: - “9090-9191” 链接: - 枢纽 - 火狐 - 铬
在jenkins的工作上,我有一个步骤:
#!/斌/庆典 docker-compose up -d --force-recreate 睡10s PROXY_IP_ADDRESS =“$(docker inspect --format {{.NetworkSettings.IPAddress}} browsermobproxy_1)” 导出BROWSERMOB_CONTAINER_HOST = $ PROXY_IP_ADDRESS
我使用一个环境variables来传递主机到我的testing代码。 这是用代理初始化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)] } })
希望这可以帮助!