ทำให้การทดสอบคุณลักษณะของคุณเป็นแบบอัตโนมัติด้วย Selenium WebDriver

เผยแพร่แล้ว: 2022-03-10
สรุปด่วน ↬ ซีลีเนียมคืออะไร และช่วยคุณได้อย่างไร ? จะเกิดอะไรขึ้นถ้าคุณได้รับแจ้งว่าโดยทั่วไปคุณสามารถทำให้งานใด ๆ ในเบราว์เซอร์ของคุณเป็นไปโดยอัตโนมัติราวกับว่าบุคคลจริงเป็นผู้ดำเนินการ ใช่คุณอ่านถูกต้อง มัน เป็น ไปได้

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

ซีลีเนียมคืออะไรและช่วยคุณได้อย่างไร?

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

ทำให้การทดสอบคุณลักษณะของคุณเป็นแบบอัตโนมัติด้วย Selenium WebDriver

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

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

เพิ่มเติมหลังกระโดด! อ่านต่อด้านล่าง↓

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

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

เตรียมการทดสอบครั้งแรกด้วย Selenium WebDriver

อย่างแรก ฉันรู้สึกไม่มั่นใจเล็กน้อยว่า Selenium จะเหมาะกับความต้องการของฉันหรือไม่ เพราะกรอบงานมักใช้ใน Java มากที่สุด และแน่นอนว่าฉันไม่ใช่ผู้เชี่ยวชาญ Java ต่อมา ฉันได้เรียนรู้ว่าการเป็นผู้เชี่ยวชาญ Java นั้นไม่จำเป็นต้องใช้ประโยชน์จากพลังของเฟรมเวิร์ก Selenium

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

สิ่งที่คุณต้องมีเพื่อเริ่มใช้ Selenium WebDriver เนื่องจากฉันตัดสินใจใช้ Selenium ทั่วไปใน Java ฉันจึงต้องตั้งค่าสภาพแวดล้อม Java เล็กๆ ของฉัน

หากคุณต้องการทำตามตัวอย่างของฉัน คุณสามารถใช้สภาพแวดล้อม Java ที่คุณเลือกได้ หากคุณยังไม่ได้ตั้งค่า ฉันแนะนำให้ติดตั้ง Eclipse และตรวจสอบให้แน่ใจว่าคุณสามารถเรียกใช้สคริปต์ “Hello world” แบบง่ายใน Java ได้

เนื่องจากฉันต้องการทดสอบการเข้าสู่ระบบใน Chrome ฉันจึงตรวจสอบให้แน่ใจว่าได้ติดตั้งเบราว์เซอร์ Chrome บนเครื่องของฉันแล้ว นั่นคือทั้งหมดที่ฉันทำในการเตรียมการ

กำลังดาวน์โหลด ChromeDriver

เบราว์เซอร์หลักทั้งหมดมีการใช้งานอินเทอร์เฟซ WebDriver ของตนเอง เนื่องจากฉันต้องการทดสอบการเข้าสู่ระบบ WordPress ใน Chrome ฉันจึงต้องการใช้งาน WebDriver ของ Chrome: ChromeDriver

ฉันแตกไฟล์ ZIP และเก็บไฟล์ปฏิบัติการ chromedriver.exe ไว้ในตำแหน่งที่ฉันจำได้ในภายหลัง

การตั้งค่าโครงการซีลีเนียมของเราใน Eclipse

ขั้นตอนที่ฉันทำใน Eclipse นั้นค่อนข้างเรียบง่ายสำหรับผู้ที่ใช้งาน Java และ Eclipse เป็นอย่างมาก แต่สำหรับคนอย่างฉันที่ไม่คุ้นเคยกับสิ่งนี้ ฉันจะอธิบายทีละขั้นตอน:

  1. เปิด Eclipse
  2. คลิกไอคอน "ใหม่"
    การสร้างโครงการใหม่ใน Eclipse
    การสร้างโครงการใหม่ใน Eclipse
  3. เลือกวิซาร์ดเพื่อสร้าง "Java Project" ใหม่ แล้วคลิก "ถัดไป"
    การเลือกตัวช่วยสร้างโปรเจ็กต์จาวา
    เลือกตัวช่วยสร้างโปรเจ็กต์จาวา
  4. ตั้งชื่อโครงการของคุณ แล้วคลิก "เสร็จสิ้น"
    ตัวช่วยสร้างโปรเจ็กต์ Eclipse
    ตัวช่วยสร้างโปรเจ็กต์สุริยุปราคา
  5. ตอนนี้คุณควรเห็นโปรเจ็กต์ Java ใหม่ของคุณที่ด้านซ้ายของหน้าจอ
    สร้างโปรเจ็กต์ Java สำเร็จ
    เราสร้างโครงการเพื่อเรียกใช้ Selenium WebDriver ได้สำเร็จ

การเพิ่มห้องสมุดซีลีเนียมในโครงการของเรา

ตอนนี้เรามีโปรเจ็กต์ Java แล้ว แต่ซีลีเนียมยังขาดอยู่ ต่อไป เราต้องนำเฟรมเวิร์ก Selenium มาไว้ในโปรเจ็กต์ Java ของเรา นี่คือขั้นตอนที่ฉันทำ:

  1. ดาวน์โหลดเวอร์ชันล่าสุดของไลบรารี Java Selenium
    กำลังดาวน์โหลดห้องสมุดซีลีเนียม
    ดาวน์โหลดห้องสมุดซีลีเนียม
  2. แตกไฟล์เก็บถาวรและจัดเก็บโฟลเดอร์ในที่ที่คุณจำได้ง่าย
  3. กลับไปที่ Eclipse และไปที่ "Project" → "Properties"
    คุณสมบัติ Eclipse
    ไปที่คุณสมบัติเพื่อรวม Selenium WebDriver ในโครงการของคุณ
  4. ในกล่องโต้ตอบ ให้ไปที่ "Java Build Path" จากนั้นจึงลงทะเบียน "Libraries"
  5. คลิกที่ "เพิ่ม JAR ภายนอก"
    การเพิ่ม Selenium lib ให้กับเส้นทางการสร้าง Java ของคุณ
    เพิ่ม Selenium lib ให้กับเส้นทางการสร้าง Java ของคุณ
  6. นำทางไปยังโฟลเดอร์ที่เพิ่งดาวน์โหลดด้วยไลบรารี Selenium เน้นไฟล์ .jar ทั้งหมดแล้วคลิก "เปิด"
    การเลือกไฟล์ที่ถูกต้องของ Selenium lib
    เลือกไฟล์ทั้งหมดของ lib เพื่อเพิ่มในโครงการของคุณ
  7. ทำซ้ำสำหรับไฟล์ .jar ทั้งหมดในโฟลเดอร์ย่อย libs ด้วย
  8. ในที่สุด คุณควรเห็นไฟล์ .jar ทั้งหมดในไลบรารีของโครงการของคุณ:
    เฟรมเวิร์ก Selenium WebDriver รวมเข้ากับโครงการของคุณสำเร็จแล้ว
    เฟรมเวิร์ก Selenium WebDriver ได้ถูกรวมเข้ากับโครงการของคุณเรียบร้อยแล้ว!

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

สร้างคลาสทดสอบของเราและปล่อยให้มันเปิดเบราว์เซอร์ Chrome

ตอนนี้เรามีโครงการ Selenium แล้ว แต่จะทำอย่างไรต่อไป เพื่อดูว่ามันใช้งานได้หรือไม่ ฉันต้องการลองอะไรง่ายๆ จริงๆ เช่น แค่เปิดเบราว์เซอร์ Chrome ของฉัน

ในการทำเช่นนี้ ฉันต้องสร้างคลาส Java ใหม่ซึ่งฉันสามารถดำเนินการทดสอบกรณีแรกได้ ในคลาสที่เรียกใช้งานได้นี้ ฉันคัดลอกโค้ด Java สองสามบรรทัด และเชื่อหรือไม่ว่ามันได้ผล! อย่างน่าอัศจรรย์ เบราว์เซอร์ Chrome เปิดขึ้นและหลังจากนั้นไม่กี่วินาทีก็ปิดเองทั้งหมด

ลองด้วยตัวคุณเอง:

  1. คลิกที่ปุ่ม "ใหม่" อีกครั้ง (ในขณะที่คุณอยู่ในโฟลเดอร์ของโครงการใหม่)
    คลาสใหม่ในคราส
    สร้างคลาสใหม่เพื่อเรียกใช้ Selenium WebDriver
  2. เลือกวิซาร์ด "Class" แล้วคลิก "ถัดไป"
    ตัวช่วยสร้างคลาสใหม่ใน eclipse
    เลือกตัวช่วยสร้างคลาส Java เพื่อสร้างคลาสใหม่
  3. ตั้งชื่อชั้นเรียนของคุณ (เช่น "RunTest") แล้วคลิก "เสร็จสิ้น"
    ตัวช่วยสร้างคลาส Eclipse Java
    ตัวช่วยสร้างคลาส Java eclipse
  4. แทนที่รหัสทั้งหมดในชั้นเรียนใหม่ของคุณด้วยรหัสต่อไปนี้ สิ่งเดียวที่คุณต้องเปลี่ยนคือพาธไปยัง chromedriver.exe บนคอมพิวเตอร์ของคุณ:
     import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /** * @author Nils Schuette via frontendtest.org */ public class RunTest { static WebDriver webDriver; /** * @param args * @throws InterruptedException */ public static void main(final String[] args) throws InterruptedException { // Telling the system where to find the chrome driver System.setProperty( "webdriver.chrome.driver", "C:/PATH/TO/chromedriver.exe"); // Open the Chrome browser webDriver = new ChromeDriver(); // Waiting a bit before closing Thread.sleep(7000); // Closing the browser and WebDriver webDriver.close(); webDriver.quit(); } }
  5. บันทึกไฟล์ของคุณ และคลิกที่ปุ่มเล่นเพื่อเรียกใช้โค้ดของคุณ
    เรียกใช้โครงการ Eclipse
    เรียกใช้โครงการ Selenium WebDriver แรกของคุณ
  6. หากคุณทำทุกอย่างถูกต้องแล้ว โค้ดควรเปิดอินสแตนซ์ใหม่ของเบราว์เซอร์ Chrome และปิดหลังจากนั้นไม่นาน
    หน้าต่างว่างของเบราว์เซอร์ Chrome
    เบราว์เซอร์ Chrome เปิดตัวเองอย่างน่าอัศจรรย์ (ตัวอย่างขนาดใหญ่)

การทดสอบการเข้าสู่ระบบของผู้ดูแลระบบ WordPress

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

  1. ไปที่แบบฟอร์มเข้าสู่ระบบ
  2. ค้นหาช่องใส่
  3. พิมพ์ชื่อผู้ใช้และรหัสผ่านลงในช่องป้อนข้อมูล
  4. กดปุ่มเข้าสู่ระบบ
  5. เปรียบเทียบพาดหัวของหน้าปัจจุบันเพื่อดูว่าการเข้าสู่ระบบสำเร็จหรือไม่

อีกครั้ง หลังจากที่ฉันทำการอัปเดตที่จำเป็นทั้งหมดสำหรับโค้ดของฉันและคลิกที่ปุ่มเรียกใช้ใน Eclipse เบราว์เซอร์ของฉันก็เริ่มทำงานอย่างน่าอัศจรรย์ผ่านการเข้าสู่ระบบ WordPress ฉันทำการทดสอบเว็บไซต์อัตโนมัติครั้งแรกสำเร็จแล้ว!

หากคุณต้องการลองทำด้วยตัวเอง ให้แทนที่โค้ดทั้งหมดของคลาส Java ของคุณด้วยสิ่งต่อไปนี้ ฉันจะพูดถึงรหัสโดยละเอียดในภายหลัง ก่อนดำเนินการโค้ด คุณต้องแทนที่ค่าสี่ค่าด้วยค่าของคุณเอง:

  1. ตำแหน่งของไฟล์ chromedriver.exe ของคุณ (ดังด้านบน)

  2. URL ของบัญชีผู้ดูแลระบบ WordPress ที่คุณต้องการทดสอบ

  3. ชื่อผู้ใช้ WordPress,

  4. รหัสผ่าน WordPress

จากนั้นบันทึกและปล่อยให้มันทำงานอีกครั้ง มันจะเปิด Chrome นำทางไปยังการเข้าสู่ระบบของเว็บไซต์ WordPress ของคุณ เข้าสู่ระบบและตรวจสอบว่าพาดหัว h1 ของหน้าปัจจุบันคือ "แดชบอร์ด" หรือไม่

 import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; /** * @author Nils Schuette via frontendtest.org */ public class RunTest { static WebDriver webDriver; /** * @param args * @throws InterruptedException */ public static void main(final String[] args) throws InterruptedException { // Telling the system where to find the chrome driver System.setProperty( "webdriver.chrome.driver", "C:/PATH/TO/chromedriver.exe"); // Open the Chrome browser webDriver = new ChromeDriver(); // Maximize the browser window webDriver.manage().window().maximize(); if (testWordpresslogin()) { System.out.println("Test Wordpress Login: Passed"); } else { System.out.println("Test Wordpress Login: Failed"); } // Close the browser and WebDriver webDriver.close(); webDriver.quit(); } private static boolean testWordpresslogin() { try { // Open google.com webDriver.navigate().to("https://www.YOUR-SITE.org/wp-admin/"); // Type in the username webDriver.findElement(By.id("user_login")).sendKeys("YOUR_USERNAME"); // Type in the password webDriver.findElement(By.id("user_pass")).sendKeys("YOUR_PASSWORD"); // Click the Submit button webDriver.findElement(By.id("wp-submit")).click(); // Wait a little bit (7000 milliseconds) Thread.sleep(7000); // Check whether the h1 equals “Dashboard” if (webDriver.findElement(By.tagName("h1")).getText() .equals("Dashboard")) { return true; } else { return false; } // If anything goes wrong, return false. } catch (final Exception e) { System.out.println(e.getClass().toString()); return false; } } }

หากคุณทำทุกอย่างถูกต้องแล้ว เอาต์พุตของคุณในคอนโซล Eclipse ควรมีลักษณะดังนี้:

ผลการทดสอบคอนโซล Eclipse
คอนโซล Eclipse ระบุว่าการทดสอบครั้งแรกของเราผ่านแล้ว (ตัวอย่างขนาดใหญ่)

การทำความเข้าใจรหัส

เนื่องจากคุณอาจเป็นนักพัฒนาเว็บและอย่างน้อยก็มีความเข้าใจพื้นฐานเกี่ยวกับภาษาการเขียนโปรแกรมอื่นๆ ฉันแน่ใจว่าคุณเข้าใจแนวคิดพื้นฐานของโค้ดแล้ว: เราได้สร้างเมธอดที่แยกออกมา testWordpressLogin สำหรับกรณีทดสอบเฉพาะที่เรียกจาก วิธีการหลักของเรา

ขึ้นอยู่กับว่าวิธีการคืนค่าจริงหรือเท็จ คุณจะได้รับผลลัพธ์ในคอนโซลของคุณเพื่อบอกคุณว่าการทดสอบเฉพาะนี้ผ่านหรือล้มเหลว

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

ทีนี้ ทีละขั้นตอน นี่คือสิ่งที่เกิดขึ้นในโปรแกรมเล็กๆ ของเรา:

  1. อันดับแรก เราบอกโปรแกรมของเราว่าสามารถค้นหา WebDriver สำหรับ Chrome ที่เฉพาะเจาะจงได้จากที่ใด
     System.setProperty("webdriver.chrome.driver","C:/PATH/TO/chromedriver.exe");
  2. เราเปิดเบราว์เซอร์ Chrome และขยายหน้าต่างเบราว์เซอร์ให้ใหญ่สุด
     webDriver = new ChromeDriver(); webDriver.manage().window().maximize();
  3. นี่คือที่ที่เราข้ามไปยังวิธีการย่อยของเราและตรวจสอบว่ามันคืนค่าจริงหรือเท็จ
     if (testWordpresslogin()) …
  4. ส่วนต่อไปนี้ในวิธีการย่อยของเราอาจไม่เข้าใจได้ง่าย:
    การ try{…}catch{…} บล็อก หากทุกอย่างเป็นไปตามที่คาดไว้ เฉพาะโค้ดใน try{…} เท่านั้นที่จะถูกดำเนินการ แต่ถ้ามีอะไรผิดพลาดในขณะดำเนินการ try{…} การดำเนินการจะดำเนินต่อไปใน catch{} เมื่อใดก็ตามที่คุณพยายามค้นหาองค์ประกอบด้วย findElement และเบราว์เซอร์ไม่พบองค์ประกอบนี้ มันจะส่งข้อยกเว้นและรันโค้ดใน catch{…} ในตัวอย่างของฉัน การทดสอบจะถูกทำเครื่องหมายเป็น "ล้มเหลว" เมื่อใดก็ตามที่มีสิ่งผิดปกติเกิดขึ้นและดำเนินการ catch{}
  5. ในวิธีการย่อย เราเริ่มต้นด้วยการไปที่ส่วนผู้ดูแลระบบ WordPress และค้นหาฟิลด์สำหรับชื่อผู้ใช้และรหัสผ่านโดยค้นหา ID ของพวกเขา นอกจากนี้เรายังพิมพ์ค่าที่กำหนดในฟิลด์เหล่านี้
     webDriver.navigate().to("https://www.YOUR-SITE.org/wp-admin/"); webDriver.findElement(By.id("user_login")).sendKeys("YOUR_USERNAME"); webDriver.findElement(By.id("user_pass")).sendKeys("YOUR_PASSWORD");

    แบบฟอร์มเข้าสู่ระบบ Wordpress
    ซีลีเนียมกรอกแบบฟอร์มเข้าสู่ระบบ
  6. หลังจากกรอกแบบฟอร์มเข้าสู่ระบบแล้ว เราจะค้นหาปุ่มส่งตามรหัสและคลิก
     webDriver.findElement(By.id("wp-submit")).click();
  7. เพื่อติดตามการทดสอบด้วยสายตา ฉันรวมการหยุดชั่วคราว 7 วินาทีไว้ที่นี่ (7000 มิลลิวินาที = 7 วินาที)
     Thread.sleep(7000);
  8. หากการเข้าสู่ระบบสำเร็จ พาดหัว h1 ของหน้าปัจจุบันควรเป็น "แดชบอร์ด" ซึ่งหมายถึงพื้นที่ผู้ดูแลระบบ WordPress เนื่องจากพาดหัว h1 ควรมีเพียงครั้งเดียวในทุกหน้า ฉันจึงใช้ชื่อแท็กที่นี่เพื่อค้นหาองค์ประกอบ ในกรณีอื่นๆ ส่วนใหญ่ ชื่อแท็กไม่ใช่ตัวระบุตำแหน่งที่ดี เนื่องจากชื่อแท็ก HTML มักจะไม่ซ้ำกันในหน้าเว็บ หลังจากค้นหาตำแหน่ง h1 เราจะแยกข้อความขององค์ประกอบด้วย getText() และตรวจสอบว่าเท่ากับสตริง “แดชบอร์ด” หรือไม่ หากการเข้าสู่ระบบไม่สำเร็จ เราจะไม่พบ “แดชบอร์ด” เป็น h1 ปัจจุบัน ดังนั้นฉันจึงตัดสินใจใช้ h1 เพื่อตรวจสอบว่าการเข้าสู่ระบบสำเร็จหรือไม่
     if (webDriver.findElement(By.tagName("h1")).getText().equals("Dashboard")) { return true; } else { return false; } 

    Wordpress Dashboard
    ให้ WebDriver ตรวจสอบ ว่าเรามาถึง Dashboard หรือไม่: ผ่านการทดสอบ! (ตัวอย่างขนาดใหญ่)
  9. หากมีอะไรผิดพลาดในส่วนก่อนหน้าของวิธีการย่อย โปรแกรมจะข้ามไปยังส่วนต่อไปนี้โดยตรง บล็อก catch จะพิมพ์ประเภทของข้อยกเว้นที่เกิดขึ้นกับคอนโซลและหลังจากนั้นจะคืนค่า false ไปยังวิธีการหลัก
     catch (final Exception e) { System.out.println(e.getClass().toString()); return false; }

การปรับกรณีทดสอบ

นี่คือจุดที่น่าสนใจหากคุณต้องการปรับเปลี่ยนและเพิ่มกรณีทดสอบของคุณเอง คุณจะเห็นว่าเราเรียกเมธอดของอ็อบเจ็กต์ webDriver เพื่อทำบางสิ่งกับเบราว์เซอร์ Chrome เสมอ

ขั้นแรก เราขยายหน้าต่างให้ใหญ่สุด:

 webDriver.manage().window().maximize();

จากนั้นในวิธีที่แยกต่างหาก เราจะไปยังส่วนผู้ดูแลระบบ WordPress ของเรา:

 webDriver.navigate().to("https://www.YOUR-SITE.org/wp-admin/");

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

 webDriver.findElement(By. …)

วิธี findElement ช่วยให้เราค้นหาองค์ประกอบต่างๆ ใน ​​DOM มีตัวเลือกต่าง ๆ เพื่อค้นหาองค์ประกอบ:

  • By.id
  • By.cssSelector
  • By.className
  • By.linkText
  • By.name
  • By.xpath

หากเป็นไปได้ ฉันแนะนำให้ใช้ By.id เพราะ ID ขององค์ประกอบควรไม่ซ้ำกันเสมอ (ไม่เหมือนเช่น className ) และมักจะไม่ได้รับผลกระทบหากโครงสร้างของ DOM ของคุณเปลี่ยนแปลง (ไม่เหมือน xPath ) .

หมายเหตุ : คุณสามารถอ่านเพิ่มเติมเกี่ยวกับตัวเลือกต่างๆ สำหรับการค้นหาองค์ประกอบด้วย WebDriver ได้ที่นี่

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

เรากำลังใช้ sendKeys เพื่อกรอกแบบฟอร์มการเข้าสู่ระบบ:

 webDriver.findElement(By.id("user_login")).sendKeys("YOUR_USERNAME");

เราใช้ click เพื่อส่งแบบฟอร์มการเข้าสู่ระบบโดยคลิกที่ปุ่มส่ง:

 webDriver.findElement(By.id("wp-submit")).click();

และมีการใช้ getText เพื่อตรวจสอบว่าข้อความใดอยู่ใน h1 หลังจากคลิกปุ่มส่ง:

 webDriver.findElement(By.tagName("h1")).getText()

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

บทสรุป

ตั้งแต่ฉันค้นพบพลังของ Selenium WebDriver ชีวิตของฉันในฐานะนักพัฒนาเว็บก็เปลี่ยนไป ฉันรักมัน ยิ่งฉันเจาะลึกลงไปในเฟรมเวิร์กมากเท่าไหร่ ฉันก็ยิ่งค้นพบความเป็นไปได้มากขึ้นเท่านั้น — ทำการทดสอบครั้งเดียวใน Chrome, Internet Explorer และ Firefox หรือแม้แต่บนสมาร์ทโฟนของฉัน หรือถ่ายภาพหน้าจอของหน้าต่างๆ โดยอัตโนมัติแล้วเปรียบเทียบ วันนี้ ฉันใช้ Selenium WebDriver ไม่เพียงแต่เพื่อการทดสอบเท่านั้น แต่ยังทำงานซ้ำๆ บนเว็บโดยอัตโนมัติอีกด้วย เมื่อใดก็ตามที่ฉันเห็นโอกาสในการทำให้งานของฉันเป็นอัตโนมัติบนเว็บ ฉันเพียงแค่คัดลอกโครงการ WebDriver เริ่มต้นของฉันและปรับให้เข้ากับงานถัดไป

หากคุณคิดว่า Selenium WebDriver เหมาะสำหรับคุณ ขอแนะนำให้ดูเอกสารประกอบของ Selenium เพื่อค้นหาความเป็นไปได้ทั้งหมดของ Selenium (เช่น การทำงานพร้อมกันบนอุปกรณ์มือถือหลายเครื่องที่มี Selenium Grid)

ฉันหวังว่าจะได้ทราบว่าคุณพบว่า WebDriver มีประโยชน์เหมือนฉันหรือไม่!