使用selenium實現UI自動化(四)
阿新 • • 發佈:2022-05-13
假如有這麼種場景,我們在做自動化的時候,需要對某個步驟進行除錯,但是這個步驟需要很多前置條件,那麼為了快速實現除錯,我們應該怎麼做呢?selenium提供了瀏覽器的debug模式,可以基於現在瀏覽器的情況進行下一步操作
使用步驟:
- 退出當前瀏覽器,關閉所有視窗
- 找到瀏覽器的安裝路徑,配置成環境變數
- 啟動本地debug模式,chrome --remote-debugging-port=9888
- 編寫程式碼
#!/usr/bin/env python # -*-coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by importBy import pytest class TestWindow: def teardown(self): self.driver.quit() def test_liu(self): opt = webdriver.ChromeOptions() opt.debugger_address = '127.0.0.1:9888' self.driver = webdriver.Chrome(options=opt) self.driver.find_element(by=By.LINK_TEXT, value="hao123推薦").click() handles = self.driver.window_handles print("所有的視窗:{}".format(handles)) self.driver.switch_to.window(handles[1]) self.driver.find_element(by=By.LINK_TEXT, value="娛樂").click() print("第二次切換後的視窗:{}".format(self.driver.current_window_handle)) self.driver.switch_to.window(handles[0])print("最後切換會第一個視窗:{}".format(self.driver.current_window_handle))
如上程式碼會在原有的瀏覽器上執行,這樣就實現了瀏覽器的複用,我們在除錯程式碼時就很方便
如何設計自己的UI自動化框架
- 梳理業務邏輯,確定好要自動化的用例
- 根據介面進行封裝PO類和方法,這裡自行參考selenium官網的PO設計原則,具體的程式碼可以先用pass代替
- 編寫用例
- 實現page內的方法,與自動化框架進行結合
- 除錯程式碼
- 把公共的方法封裝到base類,優化程式碼
到此,基本的UI自動化過程完畢,後續的就是實踐過程,可以靈活的在自己的專案中使用