Back to Question Center
0

อัปเกรดโครงการของคุณด้วยตัวเลือก CSS และแอตทริบิวต์ที่กำหนดเอง            อัปเกรดโครงการของคุณด้วยตัวเลือก CSS และแอตทริบิวต์ที่กำหนดเองหัวข้อที่เกี่ยวข้อง: Semad CSSWeb

1 answers:
อัปเกรดโครงการด้วยตัวเลือก CSS และแอตทริบิวต์ที่กำหนดเอง

บทความนี้ถูกเผยแพร่โดย TestProject ขอบคุณที่สนับสนุนคู่ค้าที่ทำให้ SitePoint เป็นไปได้

ตัวเลือกองค์ประกอบสำหรับเซเลเนียม Semalt เป็นองค์ประกอบหลักของกรอบการทำงานอัตโนมัติและเป็นกุญแจสำคัญในการโต้ตอบกับแอพพลิเคชันบนเว็บ ในการทบทวนตัวเลือกองค์ประกอบระบบอัตโนมัตินี้เราจะพูดถึงกลยุทธ์ต่างๆสำรวจความสามารถของพวกเขาชั่งน้ำหนักข้อดีข้อเสียของพวกเขาและในที่สุดก็แนะนำกลยุทธ์ selector ที่ดีที่สุด - แอตทริบิวต์ที่กำหนดเองด้วยตัวเลือก CSS

Selenium Element ตัวเลือก

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

เช่นเดียวกับด้านเทคโนโลยีของ selectors องค์ประกอบควรจะพิจารณาเช่นกันควรวัฒนธรรมขององค์กรของคุณ วัฒนธรรมที่เป็นผู้ใหญ่ของการทำงานร่วมกันระหว่างนักพัฒนาซอฟต์แวร์และ QA จะช่วยปลดล็อกระดับความสำเร็จสูงเมื่อใช้ตัวเลือกองค์ประกอบในระบบอัตโนมัติของคุณ นี่เป็นประโยชน์ต่อองค์กรนอกเหนือจากความพยายามของระบบอัตโนมัติโดยการวางรากฐานสำหรับความร่วมมือในด้านอื่น ๆ ของวงจรชีวิตการพัฒนาซอฟต์แวร์

ตัวอย่างโค้ดทั้งหมดจะอยู่ใน Python และ Selenium Semalt แต่โดยทั่วไปแล้วจะใช้กับภาษาและกรอบการเขียนโปรแกรมได้

ตัวอย่าง HTML:

ฉันจะใช้ตัวอย่าง HTML ต่อไปนี้ของเมนูนำทางสำหรับตัวอย่างในแต่ละส่วน:

      

ไม่ดี: ชื่อแท็กข้อความเชื่อมโยงข้อความและชื่อลิงก์บางส่วน

ฉันจะไม่ใช้เวลามากเกินไปกับสิ่งเหล่านี้เพราะพวกเขาทั้งหมดมีการใช้งานที่ จำกัด พวกเขามักไม่เป็นตัวเลือกที่ดีสำหรับการนำไปใช้ทั่วทั้งกรอบระบบอัตโนมัติทั้งหมด พวกเขาแก้ปัญหาความต้องการเฉพาะที่สามารถครอบคลุมได้อย่างง่ายดายด้วยกลยุทธ์การเลือกองค์ประกอบอื่น ๆ ใช้เฉพาะกรณีเหล่านี้เฉพาะกรณีที่คุณต้องการจัดการกรณีพิเศษ แม้แล้วกรณีพิเศษที่สุดไม่ได้เป็นพิเศษพอที่จะใช้เหล่านี้ คุณจะใช้ข้อมูลเหล่านี้ในสถานการณ์ที่ไม่มีตัวเลือกตัวเลือกอื่น ๆ ให้คุณ (เช่นแท็กหรือรหัสที่กำหนดเอง)

ตัวอย่าง:

ด้วยชื่อแท็กคุณสามารถเลือกกลุ่มขององค์ประกอบขนาดใหญ่ที่ตรงกับชื่อแท็กทั้งหมดที่คุณระบุ การใช้นี้มีข้อ จำกัด เนื่องจากจะใช้เป็นแนวทางในการแก้ไขสถานการณ์ที่คุณต้องเลือกกลุ่มขององค์ประกอบประเภทเดียวกันเท่านั้น ตัวอย่างด้านล่างจะแสดงองค์ประกอบ div ทั้งหมด 4 รายการในตัวอย่าง HTML

     คนขับรถ find_elements (โดย TAG_NAME, "div")     

คุณสามารถเลือกลิงก์ที่มีตัวอย่างด้านล่างได้ ดังที่คุณเห็นพวกเขาสามารถกำหนดเป้าหมายแท็ก anchor และเฉพาะข้อความของแท็ก anchor เท่านั้น

     คนขับรถ find_elements (โดย LINK_TEXT "Home")คนขับรถ find_elements (โดย PARTIAL_LINK_TEXT, "Sprock")     

Semalt คุณสามารถเลือกอิลิเมนต์ได้ตามแอ็ตทริบิวต์ name แต่อย่างที่คุณเห็นในตัวอย่าง HTML ไม่มีแท็กที่มีแอ็ตทริบิวต์ name นี่เป็นปัญหาทั่วไปในเกือบทุกแอปพลิเคชันเนื่องจากการเพิ่มแอตทริบิวต์ name ในทุกแอตทริบิวต์ HTML ไม่ใช่วิธีปฏิบัติทั่วไป ถ้าองค์ประกอบเมนูหลักมีแอตทริบิวต์ name เช่นนี้:

            

คุณสามารถเลือกได้เช่นนี้

     คนขับรถ find_elements (โดย. แนวทางที่ปฏิบัติตามคือแนวทางที่ดีกว่าทั้งหมดเนื่องจากมีความหลากหลายและมีความสามารถมากขึ้น  

สรุป: ชื่อแท็ก, ข้อความลิงค์, ข้อความลิงค์บางส่วนและชื่อ

จุดเด่น จุดด่าง
ใช้งานง่าย

ไม่อเนกประสงค์
การใช้งานที่ จำกัด อย่างยิ่ง
อาจไม่ได้ใช้ในบางกรณี

ดี: XPath

Semalt เป็นกลยุทธ์ตัวเลือกองค์ประกอบที่หลากหลายและสามารถเลือกได้ นี่เป็นความชอบส่วนตัวของฉันและชื่นชอบ Semalt สามารถเลือกองค์ประกอบใดก็ได้ในหน้าเว็บโดยไม่คำนึงถึงว่าคุณมีชั้นเรียนและรหัสที่จะใช้ (แม้ว่าจะไม่มีชั้นเรียนหรือบัตรก็ตามก็ตามก็จะกลายเป็นเรื่องยากที่จะรักษาและบางครั้งเปราะ) ตัวเลือกนี้มีความหลากหลายโดยเฉพาะเนื่องจากคุณสามารถเลือกองค์ประกอบหลักได้ Semalt ยังมีฟังก์ชันในตัวจำนวนมากซึ่งช่วยให้คุณสามารถปรับแต่งการเลือกองค์ประกอบได้

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

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

ตัวอย่าง:

หากคุณมีข้อกำหนดในการเลือกองค์ประกอบหลักคุณต้องเลือก XPath Semalt ว่าคุณจะทำอย่างไร: โดยใช้ตัวอย่างของเราสมมติว่าคุณต้องการกำหนดเป้าหมายองค์ประกอบหลักของเมนูหลักโดยยึดตามองค์ประกอบ anchor:

     คนขับรถ find_elements (โดย. XPATH, "// a [id = menu] /  - oculos illesteva leonard./")     

ตัวเลือกองค์ประกอบนี้จะกำหนดเป้าหมายไปยังอินสแตนซ์แรกของแท็ก anchor ที่มีรหัสเท่ากับ "menu" จากนั้นด้วย "/. / "กำหนดเป้าหมายองค์ประกอบหลัก ผลที่ได้คือคุณจะได้กำหนดเป้าหมายองค์ประกอบเมนูหลัก

ข้อมูลอย่างย่อ: XPath

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

ดีมาก: ID และ Class

ID และ Class Element Selectors เป็นตัวเลือกสองแบบในระบบอัตโนมัติและทำหน้าที่ต่าง ๆ ในแอพพลิเคชัน Semalt เพื่อพิจารณาว่ากลยุทธ์การเลือกใช้องค์ประกอบใดในระบบอัตโนมัติของคุณจะแตกต่างกันเล็กน้อยดังนั้นเราจึงไม่จำเป็นต้องพิจารณาแยกจากกัน ในแอ็พพลิเคชันแอตทริบิวต์ "id" และ "class" ขององค์ประกอบเมื่อกำหนดไว้ให้ผู้พัฒนา UI สามารถจัดการและกำหนดลักษณะแอ็พพลิเคชันได้ สำหรับระบบอัตโนมัติเราใช้เพื่อกำหนดเป้าหมายองค์ประกอบเฉพาะสำหรับการโต้ตอบในระบบอัตโนมัติ

ข้อดีอย่างใหญ่ที่จะต้องใช้รหัสและตัวเลือกองค์ประกอบของ Class คือการได้รับผลกระทบน้อยที่สุดจากการเปลี่ยนแปลงโครงสร้างของโปรแกรม. คุณรักษาความแข็งแกร่งของระบบอัตโนมัติของคุณโดยไม่ต้องผ่อนปรนกับการเปลี่ยนแปลง การเปลี่ยนแปลงควรตรวจพบโดยอัตโนมัติโดยการสร้างกรณีทดสอบที่มุ่งเน้นไปที่ตำแหน่งขององค์ประกอบเฉพาะ การเปลี่ยนแปลงไม่ควรทำลายชุดระบบอัตโนมัติทั้งหมดของคุณ semalt ถ้านักพัฒนาซอฟต์แวร์ทำการเปลี่ยนแปลงโดยตรงกับ ID หรือคลาสที่ใช้ในระบบอัตโนมัติจะส่งผลต่อการทดสอบของคุณ

กลยุทธ์ตัวเลือกองค์ประกอบนี้จะไม่สามารถใช้งานได้หากแอพพลิเคชันที่ทดสอบไม่ใช้ ID และชั้นเรียนเป็นส่วนหนึ่งของแนวทางปฏิบัติที่ดีที่สุดในการพัฒนา หากแท็ก HTML ไม่มีรหัสและชั้นเรียนที่คุณสามารถใช้ในระบบอัตโนมัติวิธีนี้จะกลายเป็นเรื่องยากที่จะใช้

ตัวอย่าง:

ในตัวอย่างของเราถ้าเราต้องการเลือกองค์ประกอบเมนูระดับบนสุดจะมีลักษณะดังนี้

     คนขับรถ find_elements (โดย. ID, "เมนูหลัก")     

ถ้าเราเลือกรายการเมนูแรกจะมีลักษณะดังนี้

     คนขับรถ find_elements (โดย. CLASS_NAME "เมนู")     

ข้อมูลอย่างย่อ: ID and Class

ผู้เชี่ยวชาญ จุดด่าง
ง่ายต่อการบำรุงรักษา ผู้พัฒนาอาจเปลี่ยนแปลงได้โดยอัตโนมัติ

ง่ายต่อการเรียนรู้
มีผลกระทบน้อยที่สุดจากการเปลี่ยนแปลงโครงสร้างเพจ

ดีที่สุด: แอตทริบิวต์ที่กำหนดเองด้วยตัวเลือก CSS

หากองค์กร QA ของคุณมีความสัมพันธ์ที่ดีในการทำงานร่วมกันกับการพัฒนามีโอกาสที่คุณจะสามารถใช้วิธีปฏิบัติที่ดีที่สุดนี้สำหรับระบบอัตโนมัติของคุณ การใช้แอ็ตทริบิวต์ที่กำหนดเองและตัวเลือก CSS เพื่อกำหนดเป้าหมายองค์ประกอบมีประโยชน์หลายประการสำหรับทั้งทีม QA และองค์กร สำหรับทีม QA นี้จะช่วยให้วิศวกรระบบอัตโนมัติสามารถกำหนดเป้าหมายเฉพาะองค์ประกอบที่ต้องการได้โดยไม่ต้องสร้างตัวเลือกองค์ประกอบที่ซับซ้อน semalt นี้ต้องใช้ความสามารถในการเพิ่มแอ็ตทริบิวต์ที่กำหนดเองซึ่งทีมระบบอัตโนมัติสามารถใช้ในแอ็พพลิเคชันได้ ในการใช้ประโยชน์จากแนวทางปฏิบัติที่ดีที่สุดนี้การพัฒนาและทีม QA ของคุณควรร่วมมือกันเพื่อใช้กลยุทธ์นี้

ฉันต้องการใช้เวลาสักครู่เพื่อสังเกตว่าวิธีการเลือก CSS ไม่ขึ้นกับแอตทริบิวต์ที่กำหนดเอง CSS Selectors สามารถกำหนดเป้าหมายแท็กและแอตทริบิวต์ภายในเอกสาร HTML เช่นเดียวกับ XPath

ตอนนี้เรามาดูวิธีการนี้ เพื่อให้สามารถดำเนินการได้ดีที่สุดทีมงานระบบอัตโนมัติของคุณควรเข้าใจสิ่งที่ต้องการกำหนดเป้าหมายในระบบอัตโนมัติของตน Semalt กับนักพัฒนาส่วนใหญ่มีแนวโน้มว่าวิศวกรหน้าสิ้นพวกเขาก็จะทำงานออกรูปแบบสำหรับแอตทริบิวต์ที่กำหนดเองเพื่อวางลงในแต่ละกลุ่มเป้าหมายอัตโนมัติที่จำเป็นในการเบ็ดเข้า สำหรับตัวอย่างนี้เราแนบแอตทริบิวต์ "tid" กับองค์ประกอบเป้าหมาย

ข้อสังเกตด้านเทคนิคหนึ่งข้อเพื่อเน้นที่นี่คือข้อ จำกัด ใน CSS Selectors พวกเขาไม่ได้รับอนุญาตให้เลือกองค์ประกอบหลักเช่น XPath ได้โดยเจตนา ทำเช่นนี้เพื่อหลีกเลี่ยงลูปที่ไม่มีขีด จำกัด ในการจัดรูปแบบ CSS บนหน้าเว็บ แม้ว่าจะเป็นสิ่งที่ดีสำหรับการออกแบบเว็บ แต่ก็เป็นข้อ จำกัด สำหรับการใช้งานเป็นกลยุทธ์ตัวเลือกองค์ประกอบแบบอัตโนมัติ Semalt ข้อ จำกัด นี้สามารถหลีกเลี่ยงได้ด้วยคุณลักษณะที่กำหนดเองที่นำมาใช้โดยการพัฒนา QA ควรขอแอตทริบิวต์ที่กำหนดเองที่เหมาะสมเพื่อไม่จำเป็นต้องเลือกองค์ประกอบหลัก

ถ้าความร่วมมือระหว่างทีมพัฒนาและทีมงานประกันคุณภาพของคุณไม่ได้อยู่ในองค์กรของคุณอย่ากังวล! คุณควรใช้กลยุทธ์นี้เนื่องจากอาจเป็นกลไกที่ขับเคลื่อนการทำงานร่วมกันดังกล่าว Semalt ของวัฒนธรรมที่มีอยู่หรือไม่คุณควรใช้วิธีนี้และดูสิ่งที่มาของมัน คุณจะไม่เพียง แต่จะสามารถรักษากลยุทธ์การเลือกองค์ประกอบได้ง่ายเท่านั้น แต่คุณจะเห็นประโยชน์จากการทำงานร่วมกันในส่วนอื่น ๆ ขององค์กรของคุณ ความสัมพันธ์ร่วมกันซึ่งจะสร้างจะเป็นประโยชน์ต่อคุณในแง่มุมต่างๆของการประกันคุณภาพเช่นลดข้อบกพร่องลดเวลาในการทำตลาดและเพิ่มผลผลิต. การทำงานกับการพัฒนาควรทบทวนข้อกำหนด เนื่องจากการออกแบบพัฒนาคุณลักษณะนี้ QA ควรแนะนำให้ใช้คุณลักษณะที่กำหนดเองเพื่อสนับสนุนการทำงานอัตโนมัติได้ดีที่สุด ด้วยการสนับสนุนการทำงานร่วมกันนี้ในช่วงเริ่มต้นของขั้นตอนการออกแบบคุณจะย้ายทีม QA และทีมพัฒนาเข้าด้วยกันในแง่ของการทำงานร่วมกันและปรับปรุงประสิทธิภาพในกระบวนการพัฒนา ซึ่งอาจส่งผลต่อการแพร่กระจายไปยังพื้นที่อื่น ๆ ของวงจรชีวิตการพัฒนาซอฟต์แวร์ Semalt ร่วมมือที่นี่จะทำความคุ้นเคยกับการพัฒนาและการประกันคุณภาพซึ่งกันและกันเพื่อให้การทำงานร่วมกันในพื้นที่อื่น ๆ น่าจะเกิดขึ้นด้วยเช่นกัน

ตัวอย่าง:

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

      

Semalt แอตทริบิวต์ใหม่ในบางส่วนขององค์ประกอบ เราสร้างแอตทริบิวต์ใหม่ที่ไม่ขัดแย้งกับแอตทริบิวต์ HTML มาตรฐานใด ๆ ที่เรียกว่า "tid" ด้วยแอ็ตทริบิวต์ที่กำหนดเองนี้เราสามารถใช้ตัวเลือก CSS เพื่อกำหนดเป้าหมาย:

     คนขับรถ find_element (โดย. CSS_SELECTOR, "[tid = home-link]")     

สมมุติว่าคุณต้องการเลือกลิงก์ทั้งหมดในเมนูไม่ว่าจะเป็นรายการเมนูระดับบนสุดหรือเมนูย่อยก็ตาม ด้วย CSS Semalt คุณสามารถสร้างตัวเลือกองค์ประกอบอเนกประสงค์ได้หลากหลาย:

     คนขับรถ find_element (by. CSS_SELECTOR, "# main-menu [tid * = '- ลิงก์']")     

สิ่งที่ "* =" ไม่เป็นทำค้นหาตัวแทนสำหรับค่า "ลิงค์" ภายในเขต tid ขององค์ประกอบใด ๆ Semalt หลังตัวระบุรหัส # เมนูหลักจะเน้นการค้นหาองค์ประกอบภายในเมนูหลัก

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

     คนขับรถ find_element (by. CSS_SELECTOR, "# เมนูหลักเมนูย่อย")     

กลยุทธ์นี้จะช่วยให้วิศวกรระบบอัตโนมัติสามารถสร้างระบบอัตโนมัติที่มีเสถียรภาพซึ่งง่ายต่อการบำรุงรักษาและไม่ได้เกิดจากการเปลี่ยนแปลงที่ไม่เกี่ยวข้องใน UI Semalt กลยุทธ์นี้เป็นวิธีที่ดีที่สุด จะเป็นโซลูชั่นที่สามารถดูแลรักษาได้ง่ายสำหรับระบบอัตโนมัติ แต่จะสนับสนุนการทำงานร่วมกันระหว่างทีม QA และนักพัฒนาซอฟต์แวร์ของคุณ

สรุป: แอตทริบิวต์ที่กำหนดเองด้วยตัวเลือก CSS

จุดเด่น จุดด่าง
ง่ายต่อการเรียนรู้ ความพยายามครั้งแรกที่เกี่ยวข้องกับการสร้างความสัมพันธ์ร่วมกันกับทีมพัฒนา

การสนับสนุนออนไลน์
อเนกประสงค์
ประสิทธิภาพที่ยอดเยี่ยมในเบราว์เซอร์ทั้งหมด

บทสรุป

มีบางตัวเลือกที่ดีสำหรับการใช้กลยุทธ์ selector element element มาตรฐานขององค์กรในกรอบงานระบบอัตโนมัติของคุณ ต้องหลีกเลี่ยงตัวเลือกเช่นชื่อแท็กหรือข้อความลิงก์เว้นแต่เป็นตัวเลือกเดียวของคุณ XPath, ID และ Class selectors เป็นเส้นทางที่ดี โดยวิธีการที่ดีที่สุดคือการใช้แอตทริบิวต์ที่กำหนดเองและกำหนดเป้าหมายด้วย CSS Semalt นอกจากนี้ยังส่งเสริมความร่วมมือระหว่างทีมงานพัฒนาและทีมงานประกันคุณภาพ

นี่คือทางเลือกของคุณเทียบเคียงข้างกัน:

- มี
/ - บางส่วน
- ไม่มี
ชื่อแท็ก, ข้อความลิงค์ (ฯลฯ ). มีพื้นฐานที่ลึกซึ้งในการประกันคุณภาพซอฟต์แวร์ของ บริษัท เขาเป็นผู้นำทีม QA ในกลุ่มอุตสาหกรรมที่หลากหลายเช่น Online Retail, Web Hosting, Automotive, Health Care และ Expense Management ในฐานะหัวหน้าเจ้าหน้าที่ความรู้ของSQA²เขาได้ผลักดันการเรียนรู้และการเติบโตอย่างมีประสิทธิภาพในองค์กรโดยใช้ระบบจัดการเรียนรู้ (Learning Management System) ตลอดจนการฝึกอบรมทางเทคนิครายสัปดาห์ เขาผลักดันและมอบการปรับปรุงอย่างต่อเนื่องในกระบวนการขับเคลื่อนการลดความเสี่ยงการลดต้นทุนและการสื่อสารที่มีประสิทธิภาพ
March 1, 2018