web自動化中踩過的低級錯誤坑(python+selenium)


1.定位了元素沒有做下一步操作,比如,點擊、輸入等功能,而報錯,報錯信息如下:

 

2.上傳圖片時,定位元素,應該定位input標簽,點擊頁面input標簽肉眼沒有看到定位到任何元素,以為無法成功,實際上只要有input標簽被定位到是都可以上傳圖片的!

3.定義頁面基礎類時,初始化webdiver,傳參數的時候沒有對參數driver賦默認None值,即一個默認參數,導致頁面報錯如下:

傳人默認參數,在調用self.main=Main()時,就可以不傳入參數了

class BasePage():
    _base_url = ""

    def __init__(self, driver: WebDriver = None):#就是因為這里沒有傳None!!❗️❗️⚠️
        self._driver = None
        if self._driver is None:
            ops_chrome = webdriver.ChromeOptions()
            ops_chrome.debugger_address = "127.0.0.1:9222"
            self._driver = webdriver.Chrome(options=ops_chrome)
        else:
            self._driver = driver
        if self._base_url != "":#這里的意思是如果_base_url不為空的話,就執行跳轉到某個頁面,這個頁面的url其實是子類重寫了父類的類屬性
            self._driver.get(self._base_url)
        self._driver.implicitly_wait(5)

4. 有時候報錯有可能不是沒有定位到元素,而是時間太快,頁面沒有加載出來,這個時候可以加一個等待時間再試一下

5.封裝定位元素的方法,應該將by和locate都傳進去,使用起來更加靈活!

    def find(self, by, locate):
        return self._driver.find_element(by, locate)

6.在po設計模式中,所有的頁面都要繼承頁面基類(BasePage)

7.定位元素的時候,一定要和driver打開的頁面是一致的。今天用已登錄的頁面去定位百度頁面右上角的設置,發現老是提示頁面定位不到元素的錯誤,其實就是因為driver打開的瀏覽器是沒有任何登錄信息的百度頁面,而我是去定位到的已登錄狀態的百度頁面,因此這兩個不是同一個頁面!!!以后定位元素,一定要記住這個坑,並不是這個元素沒有id屬性.

8.定位比如搜索設置中的懸浮窗時,打開控制台中使用快捷鍵是定位不到的,需要選中要查看的元素,右鍵,點擊菜單中的檢查!!

9.如果沒有定位到某個元素的時候,可以打印driver.page_source,來判斷該元素是否在當前頁面:

assert 's_btn_wr' in self.driver.page_source

 

 


免責聲明!

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



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