docker學(xué)習(xí)筆記-搭建分布式UI自動(dòng)化測(cè)試框架(五)

1、搭建瀏覽器集群,進(jìn)行兼容性測(cè)試和分布式測(cè)試,提高測(cè)試效率

2、分布式UI自動(dòng)化測(cè)試原理

Grid Hub是控制端-控制瀏覽器,node是執(zhí)行端-操作瀏覽器。
啟動(dòng)selenium測(cè)試腳本->發(fā)送請(qǐng)求給Grid Hub->Grid Hub把請(qǐng)求變成測(cè)試任務(wù)分發(fā)給node(node中包含webdiever),node驅(qū)動(dòng)瀏覽器進(jìn)行操作->結(jié)果發(fā)送給Grid Hub->Grid Hub返回結(jié)果給測(cè)試腳本。


分布式UI自動(dòng)化測(cè)試圖

3、拉取鏡像

     docker pull selenium/hub:3.7.1-beryllium

4、啟動(dòng)容器

4.1、通過(guò)link的方式啟動(dòng)容器

docker run --name=hub -p 4444:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium

docker run --name=chrome -p 4445:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium

打開(kāi)鏈接查看http://XX.XX.XX.XX:4444/grid/console

image.png

4.2、通過(guò)compose的方式啟動(dòng)容器

# To execute this docker-compose yml file use `docker-compose -f <file_name> up`
# Add the `-d` flag at the end for detached execution
version: "3"
services:
  selenium-hub:
    image: selenium/hub:3.141.59-xenon
    container_name: selenium-hub
    ports:
      - "4444:4444"
  chrome:
    image: selenium/node-chrome:3.141.59-xenon
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444
  firefox:
    image: selenium/node-firefox:3.141.59-xenon
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

4.3、不使用link方式 使用環(huán)境變量方式啟動(dòng)(解決hub在一臺(tái)機(jī)器,node在另外一臺(tái)機(jī)器的問(wèn)題)

# 運(yùn)行hub
docker run --name=hub -p 5001:4444 \
-e GRID_TIMEOUT=0 \
-e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true \
-e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 \
-e GRID_BROWSER_TIMEOUT=15000 \
-e GRID_TIMEOUT=30000 \
-e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium

# 運(yùn)行節(jié)點(diǎn)
docker run --name=chrome1 \
-e NODE_MAX_INSTANCES=6 \
-e NODE_MAX_SESSION=6 \
-e NODE_REGISTER_CYCLE=5000 \
-e HUB_PORT_4444_TCP_ADDR=hub_ip  \
-e HUB_PORT_4444_TCP_PORT=hub_port  \
-v /dev/shm:/dev/shm \
-d selenium/node-chrome:3.7.1-beryllium

5、編寫UI自動(dòng)化測(cè)試腳本

class TestTsg:
    def setup(self):
        self.driver = webdriver.Remote(
            command_executor='http://XX.XX.XX.XX:4444/wd/hub',
            desired_capabilities={'browserName': 'chrome'}
        )

        self.driver.get('https://www.baidu.com')
        print("open baidu browser")

        self.driver.find_element_by_id("kw").send_keys("docker selenium")
        self.driver.find_element_by_id("su").click()
        sleep(3)
        self.driver.get_screenshot_as_file("baidu.png")
        print("test end")

    def teardown(self):
        self.driver.quit()

    def testmy(self):
        pass

6、執(zhí)行UI自動(dòng)化測(cè)試腳本

方法一:用例對(duì)應(yīng)的目錄下面有baidu .png的截圖,表示執(zhí)行成功,否則表示執(zhí)行失敗。


image.png

方法二:使用vnc viewer查看瀏覽器操作過(guò)程

參考:https://github.com/SeleniumHQ/docker-selenium
說(shuō)明:本文是測(cè)試課程的學(xué)習(xí)筆記。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容