คุณตั้งชื่อองค์ประกอบอย่างไร
ใช้ css id หรือ class เพื่อระบุองค์ประกอบ ชอบใช้ CSS ID เมื่อวัตถุไม่ซ้ำกัน พิจารณาเฟรมเวิร์กที่คุณใช้ตัวอย่างเช่น Ruby on Rails name
แอ็ตทริบิวต์ถูกกำหนดโดยอัตโนมัติและสามารถ (ไม่ใช่แบบสังหรณ์ใจ) จะดีกว่าการใช้ css id หรือคลาส
คุณระบุองค์ประกอบอย่างไร
หลีกเลี่ยงตัวระบุตำแหน่งเหมือนtable/tr/td/td
ในความโปรดปรานของรูปแบบเช่นหรือtd[id="main_vehicle"
td[class='alternates']
พิจารณาใช้คุณลักษณะข้อมูลตามความเหมาะสม ยิ่งพยายามหลีกเลี่ยงแท็กเลย์เอาต์เช่น<td>
ทั้งหมดดังนั้นสำหรับข้างต้นคุณสามารถเพิ่มการขยายและใช้สิ่งนั้นเช่น<span id="main_vehicle">
หรือตัวเลือกสัญลักษณ์แทนเช่น*[id="main_vehicle"]
ที่*
ตอนนี้อาจเป็น div, span, td เป็นต้น
การใช้การทดสอบคุณสมบัติข้อมูลเฉพาะที่ใช้สำหรับ qa และการทดสอบเท่านั้น
หลีกเลี่ยงคุณสมบัติที่ไม่จำเป็นสำหรับองค์ประกอบ คุณอาจพบว่าตัวเองใช้ต่อไปนี้:
body.main div#vehicles > form#vehicle input#primary_vehicle_name
อย่างไรก็ตามสิ่งนี้ต้องการให้ฟิลด์อินพุตนั้นยังคงอยู่ในรูปแบบที่มีรหัสประจำตัวยานพาหนะที่แน่นอนและบนหน้าเว็บที่มีเนื้อหาของคลาสและ div ที่มีรหัสของยานพาหนะที่มีลูกของฟอร์มที่มี ID ทันที พาหนะ การเปลี่ยนแปลงใด ๆ กับโครงสร้างนั้นและการทดสอบจะแตก ในกรณีนี้คุณอาจพบว่า
input#primary_vehicle_name
ก็เพียงพอที่จะระบุองค์ประกอบ
หลีกเลี่ยงการทดสอบที่อ้างถึงข้อความที่มองเห็นได้ ข้อความบนหน้าเว็บที่แสดงต่อผู้ใช้มักจะเปลี่ยนแปลงเมื่อเวลาผ่านไปเนื่องจากมีการดูแลและปรับปรุงเว็บไซต์ดังนั้นให้ใช้ตัวระบุเช่น css id และ css class หรือ data attribute องค์ประกอบต่างๆเช่นform
, input
และselect
นำมาใช้ในรูปแบบนอกจากนี้ยังมีส่วนที่ดีขององค์ประกอบการระบุมักจะอยู่ในการรวมกันที่มี ID หรือระดับเช่นli.vehicle
หรือคุณยังสามารถเพิ่มตัวบ่งชี้ของคุณเองเช่นinput#first-vehicle
<div data-vehicle='dodge'>
วิธีนี้คุณสามารถหลีกเลี่ยงการใช้ ID องค์ประกอบหรือคลาสซึ่งน่าจะมีการเปลี่ยนแปลงโดยนักพัฒนาและนักออกแบบ ฉันได้พบจริงเมื่อเวลาผ่านไปว่ามันจะดีกว่าที่จะทำงานร่วมกับนักพัฒนาและนักออกแบบและมาตกลงกับชื่อและขอบเขต มันยาก.
วิธีแก้ไขข้อมูลที่ถูกเก็บรักษาไว้
เช่นเดียวกับการระบุองค์ประกอบจริงพยายามหลีกเลี่ยงตัวเลือกรหัสตายตัวในสายการระบุค่านิยมวัตถุหน้า - ชิ้นส่วนเล็ก ๆ ของข้อความที่เก็บไว้ในตัวแปรหรือวิธีการและสามารถนำมาใช้ซ้ำและรักษาไว้ที่ส่วนกลาง ตัวอย่างของตัวแปรจาวาสคริปต์ตามรูปแบบนี้สำหรับค่าตายตัว:
storedVars["eqv_auto_year"] = "2015";
storedVars["eqv_auto_make_1"] = "ALFA ROMEO";
storedVars["eqv_auto_make_2"] = "HONDA";`
ข้อมูลเพิ่มเติมเกี่ยวกับวัตถุหน้าที่selenium wikiและselenium docs
การสื่อสารกับนักพัฒนา
โดยไม่คำนึงถึงวิธีการทางเทคนิคในแง่ของ 'นักพัฒนาทำการเปลี่ยนแปลงและทำลายการควบคุมอัตโนมัติ QA' ซึ่งเป็นปัญหาเวิร์กโฟลว์ คุณต้องแน่ใจว่า: ทุกคนเป็นทีมเดียวกัน นักพัฒนาใช้การทดสอบแบบรวมเดียวกัน มาตรฐานมีการตกลงและตามด้วยทั้งสองกลุ่ม คำจำกัดความของการกระทำรวมถึงการทำงานและอาจปรับปรุงการทดสอบ UI; นักพัฒนาและผู้ทดสอบจับคู่กับแผนการทดสอบและทั้งคู่เข้าร่วมการตัดแต่งตั๋ว (ถ้าใช้ Agile) และพูดคุยเกี่ยวกับการทดสอบ UI ซึ่งเป็นส่วนหนึ่งของการกรูมมิ่ง คุณควรตรวจสอบให้แน่ใจว่าวิธีการและกลยุทธ์ใดก็ตามที่คุณใช้สำหรับการตั้งชื่อนั้นได้รับการประสานงานกับนักพัฒนาแอปพลิเคชัน หากคุณไม่ได้อยู่ในหน้าเดียวกันคุณจะชอบการตั้งชื่อวัตถุ ตัวอย่างบางส่วนของวิธีการหน้าวัตถุที่ฉันเพิ่งสร้างขึ้นสำหรับโครงการทับทิม:
def css_email_opt_in_true
'auto_policy[email_opt_in][value=1]'
end
def css_phone_opt_in
'*[name="auto_policy[phone_opt_in]"]'
end
def css_phone_opt_in_true
'input[name=phone_opt_in][value=true]'
end
def css_credit_rating
'auto_policy[credit_rating]'
end
นี่คือหน้าวัตถุเดียวกันกับตัวแปรจาวาสคริปต์:
storedVars["css_email_opt_in"] = "css=*[name='auto_policy[email_opt_in]']";
storedVars["css_phone_opt_in"]="css=*[name='auto_policy[phone_opt_in]']";
storedVars["css_phone_opt_in_true"]="css=input[name='phone_opt_in'][value=true]";
storedVars["css_credit_rating"]="css=select[name='auto_policy[credit_rating]']";