docker中运行selenium-remote的坑

在本地起docker容器,运行selenium的时候踩了一些坑,先简单记录,后续梳理后再完善:

 

 一、构建运行环境-容器

1、先起selenium运行的Chrome容器:

docker run -d -p 4444:4444 -p 5900:5900  --shm-size 2g selenium/standalone-chrome-debug:3.141.59-20200525

参数简析:

4444的端口映射是远端Chrome的地址,在代码中触发driver的运行部分为:

selenium_grid_url = "http://docker_chromeIP:4444/wd/hub"        # docker_chromeIP是selenium-chrome-debug容器运行的IP,需要用inspect去查看确认。
        driver = webdriver.Remote(command_executor=selenium_grid_url,
                                  desired_capabilities=caps)

 

1.1、5900端口映射是虚拟Chrome界面的启动端口号,这个是standalone-chrome-debug特有的;

1.2、在Mac端的启动方法是在finder中打开server链接,然后链接vnc://localhost:5900 密码默认为secret,就可以看到远端Chrome运行时候的情况了。

  注意,这里需要用localhost,而不是容器里面的IP,因为在起容器的时候,映射的IP是到主机的,然后起模拟Chrome的操作也是在本机进行的,这样才能ping通。

1.3、--shm-size 2g 这个的设置是Chrome-driver8.0版本以上,因为缓存不足会报错导致的,填上这个参数就不会了,解决方法是Google来的,忘记具体的报错信息了,所以说应该随时顺手记下来了的。。。

注意,还有一个镜像是standalone-chrome,这个与上面debug的区别就是没有虚拟的Chrome界面展示,在运行的时候,发现用standalone-chrome镜像的话,对界面截图就会失败,为timeout,替换为debug版本就可以了。

 

2.1、再起pytest容器:

docker run -d -v `pwd`:/data -t xharbor.i-tetris.com:5000/public/pytest:v1.0 cat

 

注意这个容器起的时候,需要在本机定位到脚本运行的根目录,因为'pwd'嘛。

 

 

二、运行脚本——在docker中运行selenium脚本:

进入selenium容器中,在data目录下执行pytest即可。

posted on   101欢欢鱼  阅读(1306)  评论(0编辑  收藏  举报

编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示