|
@@ -1,26 +1,36 @@
|
|
這是用 Python 配合上 Unittest 的專案
|
|
這是用 Python 配合上 Unittest 的專案
|
|
|
|
+
|
|
Design Pattern 一樣也是 PageObjects
|
|
Design Pattern 一樣也是 PageObjects
|
|
|
|
|
|
-命名規則:
|
|
|
|
|
|
+在 lambda 上面預計不會用到 unittest 不過 PageObjects 會繼續使用
|
|
|
|
|
|
|
|
+# 相關命名規則:
|
|
1. 檔案名稱
|
|
1. 檔案名稱
|
|
-(1) page_Name.py 表示 利用一個 py檔 (建立一個class) 描述 網站上其中一個網頁
|
|
|
|
-(2) test_Name.py 表示 其中一個測試,目前只有自己簽署
|
|
|
|
|
|
+
|
|
|
|
+ (a) page_Name.py 表示 利用一個 py檔 (建立一個class) 描述 網站上其中一個網頁
|
|
|
|
+
|
|
|
|
+ (b) test_Name.py 表示 其中一個測試,目前只有自己簽署
|
|
|
|
|
|
2. class 名稱
|
|
2. class 名稱
|
|
-(1) page_Name.py 裡面的 class 名稱和檔名一樣
|
|
|
|
-(2) 在test當中實例化時,命名的變數會是 Name
|
|
|
|
|
|
+
|
|
|
|
+ (a) page_Name.py 裡面的 class 名稱和檔名一樣
|
|
|
|
+
|
|
|
|
+ (b) 在test當中實例化時,命名的變數會是 Name
|
|
|
|
|
|
3. locator 名稱
|
|
3. locator 名稱
|
|
-(1) page_Name.py 上半部為 locator ,為該頁面欲操作網頁元素的操作依據(xpath, id, ... etc)
|
|
|
|
-(2) [A]_[B]_[C]:
|
|
|
|
|
|
+
|
|
|
|
+ (a) page_Name.py 上半部為 locator ,為該頁面欲操作網頁元素的操作依據(xpath, id, ... etc)
|
|
|
|
+
|
|
|
|
+ (b) [A]_[B]_[C]:
|
|
A 其屬性,如 button, option, tab, textbox, ... etc.
|
|
A 其屬性,如 button, option, tab, textbox, ... etc.
|
|
B 其描述,如 圓形的按鈕(同時用id作為索取依據),整個會叫做 button_circle_id,circle就是描述
|
|
B 其描述,如 圓形的按鈕(同時用id作為索取依據),整個會叫做 button_circle_id,circle就是描述
|
|
C 其索取依據,id, class_name, xpath,...
|
|
C 其索取依據,id, class_name, xpath,...
|
|
|
|
|
|
4. method (def) 名稱
|
|
4. method (def) 名稱
|
|
-(1) page_Name.py 下半部為 元素相關的 method (def), 大部分的操作會是,先確定元素出現(wait)再執行動作(click)
|
|
|
|
-(2) [A]_[B]_[C]:
|
|
|
|
|
|
+
|
|
|
|
+ (a) page_Name.py 下半部為 元素相關的 method (def), 大部分的操作會是,先確定元素出現(wait)再執行動作(click)
|
|
|
|
+
|
|
|
|
+ (b) [A]_[B]_[C]:
|
|
A 其動作,如 click, wait, ... etc
|
|
A 其動作,如 click, wait, ... etc
|
|
B 其描述,和 locator的描述一致,假設我們要點選 button_circle_id,那就會是 click_circle_button
|
|
B 其描述,和 locator的描述一致,假設我們要點選 button_circle_id,那就會是 click_circle_button
|
|
C 操作對象(locator)的屬性,會和 locator的[A]一樣
|
|
C 操作對象(locator)的屬性,會和 locator的[A]一樣
|