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即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM