Robot Framework — ep.2 มารู้จักกับ Page Object และ Relative path กันเถอะ
😸 สวัสดีครับ วันนี้จะมาพาทัวร์ทำความรู้จักกับ Page Object, ตัวอย่างของ Page Object Model และ Relative path คืออะไรกันครับ…
Robot Framework — ep.2 มารู้จักกับ Page Object และ Relative path กันเถอะ

😸 สวัสดีครับ วันนี้จะมาพาทัวร์ทำความรู้จักกับ Page Object, ตัวอย่างของ Page Object Model และ Relative path คืออะไรกันครับ ก็ถ้าพร้อมแล้วก็มาเริ่มกันดีกว่าครับ
กรณีที่เรามีหลายๆหน้าจอแต่ถ้าเราเขียนอัดทุกๆอย่างให้อยู่ในไฟล์ไฟล์เดียว ทั้ง Variables, Keywords และ Test Cases มันก็ดูจะไม่ดีเท่าไหร่ และยุ่งยากมากๆ ยากต่อการปรับปรุงหรือแก้ไข ทำให้ยากต่อการทำงาน ดังนั้นจึงต้องทำ Page Object
Page Object คืออะไร? 🧐
Page Object คือ การแยกส่วนหน้าต่างๆของเว็บ (Web Pages) ออกมาต่างหาก โดยแต่ละหน้าของเว็บจะมองเป็น Object หรือ Resource ซึ่งจะแยก Page object และ Keyword ออกจากกัน โดยแยกเป็นเพจของแต่ละเพจในระบบนั้นๆ ส่วน Keyword ก็แบ่งตามหน้าจอของระบบเลย เช่น หน้า Login ก็แยกออกมา, หน้าจ่ายเงินก็แยกออกมา, หน้า Dashboard, หน้า Settings เป็นต้น

Credit
Page Object Model 🤔
ก็มาลองดูกันครับ ว่าจะแยกได้ประมาณไหน เพื่อให้ทำงานง่ายขึ้นครับ
project/
├── testcases/
│ ├── register_testcases.robot
│ ├── login_testcases.robot
│ └── ...
├── keywords/
│ ├── register_keywords.robot
│ ├── login_keywords.robot
│ └── ...
├── resources/
│ └── data_test/
│ ├── dev/
│ │ └── dev_data_test.robot
│ └── ...
จากตัวอย่าง ผมก็ได้ลองทำจำลองการแยกหน้าต่างๆ ก็จะได้ประมาณนี้ แยกหน้าต่างๆออกจากกัน และ Keyword ก็แบ่งตามหน้าจอ เพื่อให้ง่ายต่อการแก้ไข
เอาล่ะ เมื่อเราได้มีการทำ Page Object เราก็ต้องมีการใช้ Relative path เพื่อเรียกใช้ไฟล์ที่ต้องการ เพราะว่าไฟล์ที่ต้องการไม่ได้อยู่ที่เดียวกับเราแล้ว ดังนั้นจึงต้องอ้างถึงไฟล์ที่ต้องการเพื่อเรียกใช้งาน
Relative path 🤔
คือ เส้นทางที่อ้างถึงไฟล์หรือโฟลเดอร์ โดยอิงจาก ตำแหน่งปัจจุบันของไฟล์ที่ใช้งานอยู่ (Working directory) เช่น ../libs/mylib.py
Absolute path
คือ เส้นทางเต็มจาก Root หรือ Drive เช่น /Users/you/project/libs/mylib.py หรือ C:\Users\you\project\libs\mylib.py
มาดูสัญลักษณ์กัน 😤
ชื่อไฟล์เลย= ตำแหน่งปัจจุบันอยู่ระดับเดียวกันกับไฟล์นี้./= ย้อนไปโฟลเดอร์ปัจจุบัน (Current directory)../= ย้อนขึ้นไปหนึ่งระดับ../../= ย้อนขึ้นไปสองระดับfoldername/filename= โฟลเดอร์ย่อยจากจุดที่เราอยู่
ตัวอย่าง
Project_Test/
├── common/
│ ├── keywordsTest.txt <--------- สมมุติว่าเราอยู่ที่ไฟล์นี้ (ตัวอย่าง1)
│ ├── variablesTest.txt <--------- ต้องการเรียกใช้ไฟล์นี้
│ ├── keywords/
│ │ └── login_keywords.txt <--------- ต้องการเรียกใช้ไฟล์นี้
├── libs/
│ └── Selenium2LibraryExtension.py
*** Settings ***
Library ./libs/Selenium2LibraryExtension.py
Resource variablesTest.txt
Resource ./keywords/login_keywords.txt
จากตัวอย่าง1
variablesTest.txt อยู่ใต้ Folder เดียวกันแล้ว ก็เลยใส่ Path ไปโต้งๆได้เลย
login_keywords.txt ให้เราย้อนกลับไป Folder ปัจจุบันก็คือ common ก่อน และค่อยไป keywords และก็ไป login_keywords.txt
มาดูอีกตัวอย่างนึงครับ
Project_Test/
├── common/
│ ├── keywordsTest.txt <--------- ต้องการเรียกใช้ไฟล์นี้
│ ├── variablesTest.txt
│ ├── keywords/
│ │ └── login_keywords.txt
├── libs/
│ └── Selenium2LibraryExtension.py
│
│
├── Change_User/
│ ├── change_user_keywords.txt <--------- สมมุติว่าเราอยู่ที่ไฟล์นี้ (ตัวอย่าง2)
│ ├── change_user_variables.txt <--------- ต้องการเรียกใช้ไฟล์นี้
*** Settings ***
Resource ../common/keywords.txt
Resource change_user_variables.txt
จากตัวอย่าง2
../common/keywords.txt ย้อนขึ้นไปหนึ่งระดับก็คือ Project_Test และก็ไป common และก้ไป keywordsTest.txt
คร่าวๆก็จะประมาณนี้ครับ อาจจะมีอะไรที่ผมตกหล่นไปหรือมีผิดพลาดบ้าง ก็ขออภัยมา ณ ที่นี้ด้วยครับ
🫠 ทั้งหมดก็จะมีประมาณนี้ ถ้าชอบก็อย่าลืมกดตบมือและแชร์เพื่อเป็นกำลังใจให้ผมด้วยนะครับ และอย่าลืมติดตามบทความถัดๆไปของผมด้วย ขอบคุณทุกๆท่านที่อ่านจนจบนะครับ ขอบคุณมากครับ 🥳
메타데이터
- post_id
- d7b2e3913bb5
- slug
- robot-framework-ep-2-มารู้จักกับ-page-object-และ-relative-path-กันเถอะ-d7b2e3913bb5
- url
- https://medium.com/@punthanet/robot-framework-ep-2-%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B1%E0%B8%9A-page-object-%E0%B9%81%E0%B8%A5%E0%B8%B0-relative-path-%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-d7b2e3913bb5
- canonical_url
- https://medium.com/@punthanet/robot-framework-ep-2-%E0%B8%A1%E0%B8%B2%E0%B8%A3%E0%B8%B9%E0%B9%89%E0%B8%88%E0%B8%B1%E0%B8%81%E0%B8%81%E0%B8%B1%E0%B8%9A-page-object-%E0%B9%81%E0%B8%A5%E0%B8%B0-relative-path-%E0%B8%81%E0%B8%B1%E0%B8%99%E0%B9%80%E0%B8%96%E0%B8%AD%E0%B8%B0-d7b2e3913bb5
- author_url
- https://medium.com/@punthanet
- status
- ok
- fetched_at
- 2026-06-09 15:37:30