Katalon + 傻瓜 == selenium,這個邏輯你是否知道

簡直是神器啊 (๑• . •๑)

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

今天在翻莫煩大大的博客時,看到他提到一個工具,便去看了下,第一感受是,太好用了、愛不釋手。

下面來說說這個工具:Katalon Recorder

Katalon Recorder

安裝地址:Katalon Recorder

官方介紹是:

Best Selenium IDE record, play, debug app. Exports Selenium WebDriver code. Provides reports, logs, screenshots. Fast & extensible.

簡單來說,他可以記錄你在瀏覽器上的每一個動作,包括、點擊、輸入、輸入字符等等,最後一鍵轉化為編程代碼,可以轉化的語言有:

  1. C#
  2. JAVA
  3. Katalon Studio
  4. Python2
  5. Roboot Framework
  6. Ruby
  7. XML

例如下圖就是直接轉化為 Python2的代碼

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

雖然說用的是Python2,但是並不影響,簡單改一下就就可以使用了,主要邏輯在test_untitled_test_case函數中,可以直接拿來使用。

注意這裡使用了unittest,不熟悉的可以來看看文檔

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

安裝方法

這裡建議直接在Chrome應用市場安裝,地址 Katalon Recorder

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

感受

這個相當於按鍵精靈,把我們對瀏覽器的每一步操作都完成了,可以用來生成代碼,和postman一樣,所以我才會說 Katalon + 傻瓜 == selenium,完全是傻瓜操作。

比如來做一些自動化登錄、註冊等板塊會非常爽,但是驗證碼部分還是需要自行解決。

但是該軟件也是有一些問題的,它不能進行多頁面切換,也就是不能自動切換到新打開的窗口,會有錯誤提示# ERROR: Caught exception [ERROR: Unsupported command [selectWindow | win_ser_1 | ]],這一步必須自己手動來操作,

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

測試打開多窗口的代碼

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

所以只需要這一點就可以完善代碼,同時可以看看他們的官網 KATALON - Best automated testing tool for web, mobile, API,他們主要是提供測試工具,感興趣的可以瞭解下。

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

文末知識點摘要:@classmethod與@staticmethod的區別

Python面向對象編程中,類中定義的方法可以是 @classmethod 裝飾的類方法,也可以是 @staticmethod 裝飾的靜態方法

,用的最多的還是不帶裝飾器的實例方法,如果把這幾個方法放一塊,對初學者來說無疑是一頭霧水,那我們該如何正確地使用它們呢?

先來看一個簡單示例:

class A(object):

def m1(self, n):

print("self:", self)

@classmethod

def m2(cls, n):

print("cls:", cls)

@staticmethod

def m3(n):

pass

a = A()

a.m1(1) # self: <__main__.a object="" at=""/>

A.m2(1) # cls:

A.m3(1)

我在類中一共定義了3個方法,m1 是實例方法,第一個參數必須是 self(約定俗成的)。m2 是類方法,第一個參數必須是cls(同樣是約定俗成),m3 是靜態方法,參數根據業務需求定,可有可無。當程序運行時,大概發生了這麼幾件事(結合下面的圖來看)。

  • 第一步:代碼從第一行開始執行 class 命令,此時會創建一個類 A 對象(沒錯,類也是對象,一切皆對象嘛)同時初始化類裡面的屬性和方法,記住,此刻實例對象還沒創建出來。
  • 第二、三步:接著執行 a=A(),系統自動調用類的構造器,構造出實例對象 a
  • 第四步:接著調用 a.m1(1) ,m1 是實例方法,內部會自動把實例對象傳遞給 self 參數進行綁定,也就是說, self 和 a 指向的都是同一個實例對象。
  • 第五步:調用A.m2(1)時,python內部隱式地把類對象傳遞給 cls 參數,cls 和 A 都指向類對象。
Katalon + 傻瓜 == selenium,這個邏輯你是否知道

嚴格意義上來說,左邊的都是變量名,是對象的引用,右邊才是真正的對像,為了描述方便,我直接把 a 稱為對象,你應該明白我說對象其實是它所引用右邊的那個真正的對象。

再來看看每個方法各有什麼特性

實例方法

print(A.m1)

# A.m1在py2中顯示為

print(a.m1)

>

A.m1是一個還沒有綁定實例對象的方法,對於未綁定方法,調用 A.m1 時必須顯示地傳入一個實例對象進去,而 a.m1是已經綁定了實例的方法,python隱式地把對象傳遞給了self參數,所以不再手動傳遞參數,這是調用實例方法的過程。

A.m1(a, 1)

# 等價

a.m1(1)

如果未綁定的方法 A.m1 不傳實例對象給 self 時,就會報參數缺失錯誤,在 py3 與 py2 中,兩者報的錯誤不一致,python2 要求第一個參數self是實例對象,而python3中可以是任意對象。

A.m1(1)

TypeError: m1() missing 1 required positional argument: 'n'

類方法

print(A.m2)

>

print(a.m2)

>

m2是類方法,不管是 A.m2 還是 a.m2,都是已經自動綁定了類對象A的方法,對於後者,因為python可以通過實例對象a找到它所屬的類是A,找到A之後自動綁定到 cls。

A.m2(1)

# 等價

a.m2(1)

這使得我們可以在實例方法中通過使用 self.m2()這種方式來調用類方法和靜態方法。

def m1(self, n):

print("self:", self)

self.m2(n)

靜態方法

print(A.m3)

print(a.m3)

m3是類裡面的一個靜態方法,跟普通函數沒什麼區別,與類和實例都沒有所謂的綁定關係,它只不過是碰巧存在類中的一個函數而已。不論是通過類還是實例都可以引用該方法。

A.m3(1)

# 等價

a.m3(1)

以上就是幾個方法的基本介紹。現在把幾個基本的概念理清楚了,那麼現在來說說幾個方法之間的使用場景以及他們之間的優缺點。

應用場景

靜態方法的使用場景:

如果在方法中不需要訪問任何實例方法和屬性,純粹地通過傳入參數並返回數據的功能性方法,那麼它就適合用靜態方法來定義,它節省了實例化對象的開銷成本,往往這種方法放在類外面的模塊層作為一個函數存在也是沒問題的,而放在類中,僅為這個類服務。

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

類方法的使用場景有:

作為工廠方法創建實例對象,例如內置模塊 datetime.date 類中就有大量使用類方法作為工廠方法,以此來創建date對象。

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

如果希望在方法裡面調用靜態類,那麼把方法定義成類方法是合適的,因為要是定義成靜態方法,那麼你就要顯示地引用類A,這對繼承來說可不是一件好事情。

Katalon + 傻瓜 == selenium,這個邏輯你是否知道

其實也不算是什麼深入理解吧,最多算是明白怎麼用,真要深入理解恐怕還要另寫一篇文章,有興趣的可以去了解一下Python的描述符。

寫完這篇文章,元氣大傷,默默點贊就行部分素來源網絡與自己整理,如有侵權,請聯繫刪除,希望本次分享對正在學習Python的你有所幫助。

這是為大家準備的flask完整學習資料,手機關注我的頭條號,在右上角“私信”給我“資料”兩個關鍵詞,會自動回覆視頻資料下載地址。

Katalon + 傻瓜 == selenium,這個邏輯你是否知道


分享到:


相關文章: