ทำความเข้าใจเกี่ยวกับ SystemUtil.Run, SetSecure, Set และ Type: QTP/UFT

⚡ สรุปอย่างชาญฉลาด

SystemUtil.Run คือ UFT คำสั่งหนึ่งใช้เปิดไฟล์หรือแอปพลิเคชันเมื่อเริ่มต้นเซสชันการทำงาน ในขณะที่คำสั่ง Set, SetSecure และ Type จะส่งค่าและปุ่มกดเข้าไปในหน้าต่างที่เปิดขึ้น

  • 🔘 การใส่แบบอัตโนมัติ: การเปิดใช้งานแอปพลิเคชันจาก Windows เมนูเริ่มต้นระหว่างการบันทึกทำให้ UFT คนหนึ่งเขียนขั้นตอน SystemUtil.Run ให้คุณ
  • ☑️ ห้าข้อโต้แย้ง: คำสั่ง Run รับค่า file, params, dir, op และ mode ดังนั้นคำสั่งเดียวจึงสามารถใช้เปิด แก้ไข สำรวจ ค้นหา หรือพิมพ์ไฟล์เป้าหมายได้
  • ชุดเทียบกับประเภท: คำสั่ง Set จะเขียนค่าลงในฟิลด์โดยตรง ในขณะที่คำสั่ง Type จะส่งการกดแป้นพิมพ์แบบดิบๆ เช่น micTab ซึ่งเป็นสิ่งที่มนุษย์จำเป็นต้องใช้
  • 🧪 รหัสผ่าน SetSecure: รหัสผ่านที่บันทึกไว้จะถูกจัดเก็บในรูปแบบสตริงที่เข้ารหัส ซึ่งไม่สามารถแปลงกลับเป็นข้อความเดิมได้
  • 🛠️ โปรแกรมเข้ารหัสรหัสผ่าน: โปรแกรมเข้ารหัสรหัสผ่านแบบ GUI และ CryptonCMD.exe สร้างสตริงที่เข้ารหัสแล้วเหมือนกันแม้จะอยู่นอกเซสชันการบันทึกก็ตาม
  • 📌 ชื่อปัจจุบัน: QTP คือตอนนี้ OpenText การทดสอบการทำงาน (UFT หนึ่ง) และ SystemUtil.Run จะเข้ามาแทนที่คำสั่ง InvokeApplication แบบเดิม

คำสั่ง SystemUtil.Run, SetSecure, Set และ Type ใน QTP/UFT สคริปต์หนึ่ง

SystemUtil.Run ใน UFT

การทดสอบ GUI ที่บันทึกไว้ทุกครั้งจำเป็นต้องมีขั้นตอนแรกคือการแสดงแอปพลิเคชันที่กำลังทดสอบบนหน้าจอ OpenText การทดสอบการทำงาน (UFT วัน (เดิมชื่อ ไมโคร โฟกัส) UFT และเดิมทีคือ HP QTPขั้นตอนนั้นคือ ระบบยูทิลิตี้รันมาทำความเข้าใจโค้ดต่อไปนี้กัน

SystemUtil.Run "C:\Program Files\HP\samples\flight\app\flight.exe"
Dialog("Login").WinEdit("Agent Name:").Set "Guru"
Dialog("Login").WinEdit("Agent Name:").Type micTab
Dialog("Login").WinEdit("Password:").SetSecure "4af272a62666d2e"
Dialog("Login").WinButton("OK").Click
Window("Flight Reservation").Close
  • ขั้นตอนแรกคือ คำสั่ง SystemUtil.Run ซึ่งถูกใช้งานโดยค่าเริ่มต้น UFT/QTP เพื่อเปิดแอปพลิเคชัน ในระหว่างการบันทึกโดยใช้ Windows เมนู Start เราไปที่ "การจองเที่ยวบินแอปพลิเคชัน “ ในเวลานั้น ไมโครโฟกัส” UFT ระบุตำแหน่งของไฟล์ปฏิบัติการและแทรกคำสั่ง SystemUtil.Run เพื่อเปิดไฟล์นั้น
  • บรรทัดที่ 2 คือ การตั้งชื่อเอเจนต์เป็น Guru ตามที่แสดงในหน้าจอที่ใช้งานอยู่
  • บรรทัดที่ 3 กำลังกดปุ่ม Tab บนแป้นพิมพ์เพื่อนำโฟกัสจากฟิลด์ชื่อตัวแทนไปยังฟิลด์รหัสผ่านซึ่งเป็นขั้นตอนนี้ ผู้ใช้งานที่เป็นมนุษย์จำเป็นต้องใช้การกดปุ่ม Tab หรือคลิกเพื่อเลือกวัตถุที่ต้องการบนหน้าจอ ในทางกลับกัน การทดสอบอย่างรวดเร็ว สามารถระบุวัตถุได้โดยตรงโดยใช้คุณสมบัติของวัตถุ และไม่จำเป็นต้องมีการดำเนินการ "หลบหลีก" เหล่านี้เราสามารถลบขั้นตอนนี้ออกได้ เนื่องจาก UFT ผู้ใช้ยังคงสามารถตั้งค่าช่องรหัสผ่านได้โดยไม่ต้องดำเนินการนี้
  • บรรทัดที่ 4 กำลังตั้งรหัสผ่านเป็น Mercury. UFT หนึ่งในนั้นคือระบบที่เข้ารหัสรหัสผ่านโดยอัตโนมัติ เข้ามาในขณะที่บันทึก เพื่อหลีกเลี่ยงการละเมิดความปลอดภัย ค่านี้ไม่สามารถถอดรหัสได้ กล่าวคือ ไม่มีทางกู้คืนค่าเดิมโดยใช้ข้อมูลที่เข้ารหัสนี้ คุณสามารถเข้ารหัสรหัสผ่านอย่างชัดเจนโดยใช้เครื่องมือเข้ารหัสรหัสผ่าน เพื่อจุดประสงค์ในการเรียนรู้ เราจะใช้รหัสผ่านในรูปแบบดิบ และการดำเนินการจะเปลี่ยนเป็นตั้งค่า
  • บรรทัดที่ 5 กำลังคลิกปุ่มตกลง
  • บรรทัดที่ 6 กำลังปิดหน้าต่าง

⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: เส้นทางที่บันทึกไว้ข้างต้นชี้ไปยังสิ่งเก่า C:\Program Files\HP\samples\flight ตำแหน่งที่ HP ใช้ QTPแอปพลิเคชันตัวอย่างสำหรับการจองเที่ยวบินยังคงมาพร้อมกับ UFT อันแรก แต่จะอยู่ในโฟลเดอร์การติดตั้งปัจจุบัน ดังนั้นเส้นทางจริงในสคริปต์ที่บันทึกไว้ในวันนี้จะแตกต่างออกไป

คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้

ไวยากรณ์และอาร์กิวเมนต์ของ SystemUtil.Run

บรรทัดที่บันทึกไว้ข้างต้นใช้เพียงอาร์กิวเมนต์แรกเท่านั้น แต่เมธอดนี้รับได้ถึงห้าอาร์กิวเมนต์ การทราบอาร์กิวเมนต์ทั้งหมดจะทำให้ SystemUtil.Run จากไฟล์บันทึกกลายเป็นขั้นตอนการเรียกใช้งานที่คุณสามารถเขียนด้วยตนเองได้

SystemUtil.Run file, [params], [dir], [op], [mode]
ข้อโต้แย้ง ต้อง? สิ่งที่มันไม่
ไฟล์ ต้อง ชื่อไฟล์หรือแอปพลิเคชันที่จะเรียกใช้งาน ไฟล์ที่ไม่สามารถเรียกใช้งานได้จะเปิดขึ้นในแอปพลิเคชันที่เกี่ยวข้อง
params สามารถเลือกหรือไม่เลือกก็ได้ พารามิเตอร์ที่ส่งไปยังแอปพลิเคชันเมื่อ ไฟล์ เป็นไฟล์ที่สามารถเรียกใช้งานได้ ค่าเริ่มต้นคือสตริงว่าง
dir สามารถเลือกหรือไม่เลือกก็ได้ ไดเร็กทอรีเริ่มต้นสำหรับแอปพลิเคชันหรือไฟล์ ค่าเริ่มต้นคือสตริงว่าง
op สามารถเลือกหรือไม่เลือกก็ได้ คำสั่งที่จะดำเนินการ: เปิด แก้ไข สำรวจ ค้นหา หรือพิมพ์ ค่าว่างหมายถึงการเปิด
โหมด สามารถเลือกหรือไม่เลือกก็ได้ จำนวนเต็มที่ควบคุมวิธีการแสดงผลหน้าต่างเมื่อเปิดขึ้น ค่าเริ่มต้นคือ 1

การขอ op ข้อโต้แย้งนี้เป็นข้อโต้แย้งที่ผู้ทดสอบส่วนใหญ่ไม่เคยค้นพบ มันสอดคล้องกับคำกริยาเดียวกัน Windows โปรแกรม Explorer มีตัวเลือกให้เลือกเมื่อคลิกขวา

ค่า op ผล
เปิด เปิดไฟล์ โฟลเดอร์ หรือไฟล์ปฏิบัติการที่ระบุชื่อไว้ ไฟล์.
แก้ไข เรียกใช้โปรแกรมแก้ไขและเปิดเอกสารเพื่อแก้ไข การดำเนินการจะล้มเหลวหากไฟล์ไม่ใช่เอกสารที่แก้ไขได้
explore สำรวจโฟลเดอร์ที่ระบุชื่อไว้ใน ไฟล์.
พบ เริ่มการค้นหาจากเส้นทางโฟลเดอร์ที่ระบุ
พิมพ์ พิมพ์เอกสารที่ระบุชื่อไว้ใน ไฟล์หากไฟล์ไม่สามารถพิมพ์ได้ การดำเนินการจะล้มเหลว

ใช้เพื่อการ โหมดค่าที่สำคัญในชีวิตประจำวัน ได้แก่ 0 (ซ่อนหน้าต่างและเปิดหน้าต่างอื่น), 1 (เปิดและแสดงผลในขนาดดั้งเดิม), 2 (เปิดแบบย่อ) และ 3 (เปิดแบบเต็มจอ) ค่าที่สูงกว่าจะควบคุมการโฟกัสและพฤติกรรมการคืนค่า และไม่ค่อยจำเป็นในการทดสอบ

ตัวอย่างการใช้งาน SystemUtil.Run: แอปพลิเคชัน, เบราว์เซอร์ และไฟล์

ตัวอย่างด้านล่างแสดงข้อโต้แย้งทีละข้อ เพื่อให้คุณเห็นว่าแต่ละตำแหน่งเพิ่มอะไรบ้าง คัดลอกตัวอย่างเหล่านี้ลงในแอ็กชันใหม่และเรียกใช้ทีละบรรทัด

1) เฉพาะไฟล์ — รูปแบบที่สั้นที่สุดและใช้งานได้จริง ไฟล์ปฏิบัติการที่อยู่ในเส้นทางระบบไม่จำเป็นต้องมีโฟลเดอร์ และเอกสารจะเปิดขึ้นในแอปพลิเคชันใดก็ได้ Windows ได้ลงทะเบียนแล้ว

SystemUtil.Run "notepad.exe"
SystemUtil.Run "C:\Data\Orders.txt"

2) ไฟล์พร้อมพารามิเตอร์ — สิ่งใดก็ตามที่แอปพลิเคชันยอมรับได้ในบรรทัดคำสั่ง จะถูกใส่ไว้ตรงนี้ นี่คือวิธีการเปิดเบราว์เซอร์ไปยังที่อยู่เฉพาะ แทนที่จะเป็นหน้าแรก

SystemUtil.Run "notepad.exe", "C:\Data\Orders.txt"

3) การเพิ่มไดเร็กทอรี — มีประโยชน์เมื่อแอปพลิเคชันไม่ยอมเริ่มต้นทำงาน เว้นแต่ว่าโฟลเดอร์ของแอปพลิเคชันนั้นจะอยู่ในไดเร็กทอรีการทำงาน

SystemUtil.Run "flight.exe", "", "C:\Program Files\HP\samples\flight\app\"

4) การเพิ่ม op — ไฟล์เดียวกัน แต่ได้ผลลัพธ์ต่างกันสี่แบบ

SystemUtil.Run "C:\Data\Orders.txt", "", "", "edit"
SystemUtil.Run "C:\Data", "", "", "explore"
SystemUtil.Run "C:\Data", "", "", "find"
SystemUtil.Run "C:\Data\Orders.txt", "", "", "print"

5) โหมดการเพิ่ม — เปิดหน้าต่างให้เต็มหน้าจอ เพื่อไม่ให้ขั้นตอนต่อไปถูกบดบังด้วยปุ่มควบคุมที่ซ่อนอยู่บางส่วน

SystemUtil.Run "notepad.exe", "C:\Data\Orders.txt", "", "open", 3

เนื่องจากหน้าต่างที่เปิดขึ้นมานั้นกลายเป็นวัตถุทดสอบธรรมดา บรรทัดถัดไปจึงสามารถควบคุมมันได้ทันที เอกสารอย่างเป็นทางการได้จับคู่คำสั่ง Run กับ Type และ Close ในลักษณะนี้อย่างชัดเจน

SystemUtil.Run "C:\type.txt", "", "", ""
Window("Text:=type.txt - Notepad").Type "happy days"
Window("Text:=type.txt - Notepad").Close

โปรดสังเกตคำอธิบาย ข้อความ:= ในรูปแบบโค้ดตัวอย่างนั้น ไม่จำเป็นต้องมีรายการในคลังเก็บข้อมูล แนวคิดเดียวกันนี้ได้อธิบายไว้โดยละเอียดใน การเขียนโปรแกรมเชิงพรรณนาและเส้นทางที่กำหนดไว้ตายตัวเช่นที่กล่าวมาข้างต้น มักจะเก็บรักษาไว้ได้ดีกว่า ตัวแปรสภาพแวดล้อม ดังนั้นสคริปต์เดียวจึงทำงานบนทุกเครื่อง

Set, SetSecure และ Type: ควรใช้วิธีใด

บรรทัดที่ 2 ถึง 4 ของสคริปต์ที่บันทึกไว้ใช้สามวิธีที่แตกต่างกันในช่องแก้ไขประเภทเดียวกัน วิธีเหล่านี้ไม่สามารถใช้แทนกันได้ และการเลือกวิธีที่ผิดเป็นสาเหตุทั่วไปที่ทำให้ขั้นตอนผ่านไปโดยไม่มีการป้อนข้อมูลใดๆ

วิธี สิ่งที่มันส่งมา ใช้เมื่อ
ชุด เขียนค่าข้อความธรรมดาลงในช่องข้อมูลโดยตรง การป้อนข้อมูลตามปกติ รวมถึงการใส่รหัสผ่านที่คุณยินดีที่จะให้คนอื่นอ่านได้
ตั้งค่าความปลอดภัย เขียนสตริงที่เข้ารหัสแล้วซึ่ง UFT ถอดรหัสในระหว่างการทำงาน ช่องป้อนรหัสผ่านใดๆ ก็ตาม ค่าของมันจะไม่ปรากฏในสคริปต์หรือผลลัพธ์เลย
ประเภท ส่งข้อมูลการกดแป้นพิมพ์แบบดิบๆ รวมถึงปุ่มต่างๆ เช่น micTab พฤติกรรมของแป้นพิมพ์เป็นส่วนหนึ่งของการทดสอบ หรือตัวควบคุมจะตอบสนองเฉพาะต่อการกดปุ่มจริงเท่านั้น

ตามที่คำอธิบายระบุไว้ การกดปุ่ม Tab ในบรรทัดที่ 3 เกิดขึ้นได้ก็เพราะโปรแกรมบันทึกเสียงจับพฤติกรรมของมนุษย์ได้เท่านั้น UFT เราสามารถระบุช่องรหัสผ่านได้จากคุณสมบัติของมัน ดังนั้นการลบบรรทัดนั้นจึงไม่ทำให้เกิดการเปลี่ยนแปลงใดๆ หากเปลี่ยน SetSecure เป็น Set การเข้าสู่ระบบแบบเดียวกันก็จะยังคงใช้งานได้โดยมีรหัสผ่านที่อ่านได้

Dialog("Login").WinEdit("Password:").Set "mercury"

หากต้องการทำในทางกลับกันและเข้ารหัสค่าภายนอกเซสชันการบันทึก ให้ใช้ ตัวเข้ารหัสรหัสผ่านเครื่องมือ GUI มาพร้อมกับ UFT หนึ่ง และการเข้ารหัสแบบเดียวกันนี้สามารถใช้งานได้จากบรรทัดคำสั่งเช่นกัน CryptonCMD.exe -e ในโฟลเดอร์ bin ของผลิตภัณฑ์ ทั้งสองแบบจะสร้างสตริงที่คุณสามารถใส่ลงในอาร์กิวเมนต์ SetSecure หรือลงใน พารามิเตอร์ตารางข้อมูลผู้ขายระบุอย่างชัดเจนว่าการเข้ารหัสนี้ไม่ใช่มาตรฐานด้านความปลอดภัย: มันแค่ซ่อนค่าบนหน้าจอ ไม่ได้ปกป้องข้อมูลลูกค้าที่แท้จริง

เมื่อเชี่ยวชาญวิธีการทั้งสามนี้แล้ว ภาษาที่เหลือก็จะตามมาอย่างรวดเร็ว — พื้นฐานของ VBScript และกว้างขึ้น UFT ชุดบทเรียนหนึ่งชุด ครอบคลุมถึงลูป เงื่อนไข และฟังก์ชันที่นำกลับมาใช้ใหม่ได้ ในขณะที่ Object Spy และ GetROProperty แสดงให้คุณเห็นว่าคุณสมบัติใดบ้าง UFT อันหนึ่งตรงกันพอดี

คำถามที่พบบ่อย

คำสั่ง Run จะถูกเขียนลงในการทดสอบโดยอัตโนมัติทุกครั้งที่คุณเริ่มแอปพลิเคชันจาก Windows เลือกเมนูเริ่มต้นหรือกล่องโต้ตอบเรียกใช้ระหว่างการบันทึก ขอบคุณครับping การเขียนด้วยมือก็ให้ผลลัพธ์เหมือนกัน

ไม่ สตริงที่เข้ารหัสแล้วไม่สามารถแปลงกลับเป็นรหัสผ่านเดิมได้ นั่นเป็นเหตุผลว่าทำไมค่าที่หายไปจึงต้องถูกเข้ารหัสใหม่แทนที่จะถอดรหัส หากรหัสผ่านเปลี่ยนแปลง ให้เปลี่ยนอาร์กิวเมนต์ทั้งหมด

ใช้เครื่องมือเข้ารหัสรหัสผ่านที่มาพร้อมกับโปรแกรม UFT หรือเรียกใช้ CryptonCMD.exe -e ตามด้วยสตริงจากโฟลเดอร์ bin ของผลิตภัณฑ์ ทั้งสองวิธีจะส่งค่าที่เหมาะสมสำหรับใช้เป็นอาร์กิวเมนต์ในคำสั่ง SetSecure หรือเซลล์ในตารางข้อมูล

การตั้งค่าการบันทึกและการเรียกใช้งานสามารถเปิดแอปพลิเคชันก่อนขั้นตอนแรกได้ และคำสั่ง InvokeApplication แบบเดิมยังคงใช้งานได้ ผู้จำหน่ายยังคงเก็บ InvokeApplication ไว้เพื่อความเข้ากันได้กับเวอร์ชันเก่าเท่านั้น และแนะนำให้ใช้ Run แทน

นอกจาก Window(…).Close แล้ว อ็อบเจ็กต์ SystemUtil ยังมี CloseProcessByName, CloseProcessById, CloseProcessByHwnd, CloseProcessByWndTitle และ CloseDescendentProcesses ซึ่งจะปิดทุกกระบวนการที่เซสชันการทำงานเริ่มต้นขึ้น

ผู้ช่วย AI สามารถร่างคำสั่ง Run, Set และ Type จากคำอธิบายภาษาอังกฤษธรรมดา และแนะนำวิธีแก้ไขเมื่อตัวระบุตำแหน่งทำงานผิดพลาด อย่างไรก็ตาม ทุกบรรทัดที่สร้างขึ้นยังคงต้องได้รับการตรวจสอบกับคุณสมบัติของวัตถุจริงก่อนที่จะทำงาน

Copilot สามารถเขียนโค้ด VBScript ในโปรแกรมแก้ไขข้อความใดๆ ที่รองรับได้ ดังนั้นการสร้างฟังก์ชันช่วยเหลือหรือลูปวนซ้ำข้อมูลทดสอบจึงทำได้อย่างรวดเร็ว UFT เนื่องจากไม่มีปลั๊กอิน Copilot จึงต้องคัดลอกโค้ดไปวางในโปรแกรมแก้ไขข้อความและตรวจสอบความถูกต้องที่นั่น

สาเหตุหลักมักเกิดจากเส้นทางไฟล์ที่ไม่ถูกต้อง เช่น โฟลเดอร์ติดตั้งต่างกัน การแบ่งโฟลเดอร์ Program Files เป็น 32 บิตหรือ 64 บิต หรือไดรฟ์ที่แมปไว้ไม่มีอยู่จริง การเก็บเส้นทางไฟล์ไว้ในตัวแปรสภาพแวดล้อมจะช่วยแก้ปัญหานี้ได้

สรุปโพสต์นี้ด้วย: