HTMLUnitDriver ใน Selenium
เบราว์เซอร์ที่ไม่มีส่วนหัวคือเว็บเบราว์เซอร์ที่ไม่มีอินเทอร์เฟซผู้ใช้แบบกราฟิก มันสามารถทำงานในพื้นหลังโดยไม่มีการรบกวนสายตา นำเสนอวิธีที่มีประสิทธิภาพและประสิทธิผลในการทดสอบแอปพลิเคชันเว็บพร้อมทั้งประหยัดเวลาและทรัพยากร ในบทช่วยสอนนี้ เราจะเจาะลึกว่าเบราว์เซอร์ Headless คืออะไร ควรใช้การทดสอบเบราว์เซอร์ Headless เมื่อใด และวิธีการใช้งาน Selenium.
Headless Browser คืออะไร?
เบราว์เซอร์ที่ไม่มีหัวคือเว็บเบราว์เซอร์ โดยไม่มีส่วนติดต่อผู้ใช้แบบกราฟิก- โปรแกรมนี้จะทำงานเหมือนกับเบราว์เซอร์ แต่จะไม่แสดง GUI ใด ๆ
ตัวอย่างบางส่วนของ Headless Drivers ได้แก่
- Htmlหน่วย
- ผี
- PhantomJS
- ซอมบี้JS
- Watir-เว็บไดรเวอร์
เมื่อใดจึงควรใช้การทดสอบเบราว์เซอร์ Headless
ในยุคดิจิทัลทุกวันนี้ แอปพลิเคชันเว็บได้รับการพัฒนาให้เข้ากันได้กับอุปกรณ์และแพลตฟอร์มที่หลากหลาย ซึ่งมักเป็นความท้าทายสำหรับนักพัฒนาเว็บไซต์ที่ต้องการให้แน่ใจว่าแอปพลิเคชันของตนทำงานได้อย่างราบรื่นบนแพลตฟอร์มเหล่านี้ การทดสอบเบราว์เซอร์แบบ Headless ถือเป็นวิธีแก้ปัญหาที่เหมาะสำหรับปัญหานี้ เนื่องจากช่วยให้นักพัฒนาสามารถทดสอบแอปพลิเคชันเว็บของตนได้โดยไม่ต้องใช้ส่วนต่อประสานผู้ใช้แบบกราฟิก การใช้การทดสอบเบราว์เซอร์แบบ Headless ช่วยให้นักพัฒนาสามารถทดสอบแอปพลิเคชันเว็บที่ซับซ้อนที่มีส่วนประกอบและการอ้างอิงหลายรายการได้อย่างง่ายดาย ช่วยปูทางไปสู่การพัฒนาที่รวดเร็วยิ่งขึ้น โค้ดไม่มีข้อบกพร่อง และผู้ใช้พึงพอใจ
การทดสอบเบราว์เซอร์แบบไม่มีส่วนหัวด้วย Selenium
Selenium เป็นเครื่องมืออันทรงพลังสำหรับการทดสอบเบราว์เซอร์แบบไม่มีส่วนหัว ช่วยให้นักพัฒนาสามารถเรียกใช้การทดสอบอัตโนมัติได้โดยไม่ต้องใช้ส่วนต่อประสานผู้ใช้ที่มองเห็นได้ โดยการเรียกใช้การทดสอบในเบื้องหลัง Selenium สามารถประหยัดเวลาและทรัพยากรในขณะเดียวกันก็ช่วยระบุปัญหาที่อาจไม่ชัดเจนในสภาพแวดล้อมการทดสอบที่ใช้ UI แบบเดิม ซึ่งรวมถึงปัญหาที่เกี่ยวข้องกับประสิทธิภาพและปัญหาเค้าโครงที่อาจชัดเจนเฉพาะในการตั้งค่าที่ไม่มีหัวเท่านั้น อย่างไรก็ตาม สิ่งสำคัญคือต้องคำนึงถึงข้อจำกัดของการทดสอบแบบ Headless และปรับสมดุลกับวิธีการที่ใช้ UI แบบเดิมเพื่อให้แน่ใจว่าครอบคลุมการทดสอบที่ครอบคลุม
ตัวอย่างยอดนิยมของเบราว์เซอร์ Headless
มีเบราว์เซอร์ headless มากมายให้เลือกใช้งาน ซึ่งแต่ละอันมีคุณสมบัติและคุณประโยชน์เฉพาะตัว ทำให้เหมาะสำหรับกรณีการใช้งานที่แตกต่างกัน เราหารือกันด้านล่าง:-
PhantomJS
PhantomJS เป็นเบราว์เซอร์แบบไม่มีส่วนหัวที่ใช้ WebKit เป็นเครื่องมือในการเรนเดอร์ และรองรับมาตรฐานเว็บต่างๆ เช่น HTML5, CSS3 และ Javaสคริปต์ ใช้สำหรับจับภาพหน้าจอและจัดการหน้าเพจอัตโนมัติ เป็นโอเพ่นซอร์สและใช้งานได้กับระบบปฏิบัติการหลายระบบ
ตัวอย่างของการ Selenium โดยมี Headless PhantomJS เข้ามา Python
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # Set up PhantomJS options phantomjs_options = webdriver.DesiredCapabilities.PHANTOMJS.copy() phantomjs_options['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' # Set up the PhantomJS driver driver = webdriver.PhantomJS('/path/to/phantomjs', desired_capabilities=phantomjs_options) # Perform actions using the driver driver.get('https://www.example.com') print(driver.title) # Close the driver driver.quit()
Chrome
Chrome เป็นเบราว์เซอร์ที่ได้รับความนิยมมากที่สุดในโลกและมีคุณสมบัติที่ไม่มีหัวเช่นกัน สามารถใช้ได้กับหลายแพลตฟอร์มและรองรับภาษาและเฟรมเวิร์กการเขียนโปรแกรม เครื่องมือแก้ไขจุดบกพร่องในตัวและเอกสารประกอบที่ครอบคลุมทำให้ใช้งานง่ายและแก้ไขปัญหาใดๆ ที่อาจเกิดขึ้นระหว่างการทดสอบ
ตัวอย่าง Headless Chrome พร้อมด้วย Selenium in Python
from selenium import webdriver from selenium.webdriver.chrome.options import Options # Set up Chrome options chrome_options = Options() chrome_options.add_argument('--headless') # Run Chrome in headless mode chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # Set up the Chrome driver driver = webdriver.Chrome('/path/to/chromedriver', options=chrome_options) # Perform actions using the driver driver.get('https://www.example.com') print(driver.title) # Close the driver driver.quit()
Firefox
Firefox เป็นเว็บเบราว์เซอร์ยอดนิยมที่สามารถใช้เป็นเบราว์เซอร์แบบไม่มีส่วนหัวเพื่อการทดสอบได้ ประโยชน์อย่างหนึ่งของการใช้ Firefox เนื่องจากเบราว์เซอร์แบบไม่มีส่วนหัวมีน้ำหนักเบา จึงเป็นตัวเลือกอเนกประสงค์สำหรับการทดสอบบนระบบปฏิบัติการต่างๆ นอกจากนี้ ด้วยเอกสารประกอบที่ครอบคลุมและการสนับสนุนจากชุมชน Firefox เป็นตัวเลือกที่ยอดเยี่ยมสำหรับผู้ที่ต้องการทดลองใช้เทคโนโลยีเบราว์เซอร์แบบไม่มีหัว
ตัวอย่างของ Headless Firefox กับ Selenium in Python
from selenium import webdriver from selenium.webdriver.firefox.options import Options # Set up Firefox options firefox_options = Options() firefox_options.add_argument('--headless') # Run Firefox in headless mode # Set up the Firefox driver driver = webdriver.Firefox(options=firefox_options) # Perform actions using the driver driver.get('https://www.example.com') print(driver.title) # Close the driver driver.quit()
ข้อดีของการทดสอบเบราว์เซอร์ Headless
- การดำเนินการทดสอบที่รวดเร็วยิ่งขึ้น
- การทดสอบที่คุ้มค่า
- ความครอบคลุมการทดสอบที่ดีขึ้น
- ความยืดหยุ่นในการทดสอบการทำงาน
- บูรณาการกับไปป์ไลน์ CI/CD
ข้อเสียของการทดสอบเบราว์เซอร์ Headless
- ขาด GUI
- ความยากลำบากในการดีบัก
- การสนับสนุนเบราว์เซอร์ที่จำกัด
HTMLUnitDriver
HTML UnitDriver เป็นเบราว์เซอร์แบบไม่มีหัวที่มีน้ำหนักเบาที่สุดและใช้งานได้เร็วที่สุดสำหรับ WebDriver มันขึ้นอยู่กับ HtmlUnit เป็นที่รู้จักกันในนาม ไดร์เวอร์เบราว์เซอร์หัวขาด. มันเหมือนกับ Chrome, IE หรือ FireFox ไดรเวอร์ แต่ไม่มี GUI ดังนั้นจึงไม่เห็นการทดสอบบนหน้าจอ
คุณสมบัติของไดรเวอร์หน่วย HTML
- รองรับโปรโตคอล HTTPS และ HTTP
- รองรับการตอบกลับ HTML (การคลิกลิงก์, การส่งแบบฟอร์ม, การเดินโมเดล DOM ของเอกสาร HTML ฯลฯ )
- การสนับสนุนสำหรับคุกกี้
- รองรับพร็อกซีเซิร์ฟเวอร์
- รองรับการตรวจสอบสิทธิ์ขั้นพื้นฐานและ NTLM
- ยอดเยี่ยม Javaต้นฉบับ สนับสนุน
- รองรับวิธีการส่ง GET และ POST
- ความสามารถในการปรับแต่งส่วนหัวคำขอที่ถูกส่งไปยังเซิร์ฟเวอร์
- ความสามารถในการกำหนดว่าการตอบสนองที่ล้มเหลวจากเซิร์ฟเวอร์ควรทำให้เกิดข้อยกเว้นหรือควรส่งคืนเป็นเพจประเภทที่เหมาะสม
ขั้นตอนในการใช้ไดรเวอร์ HTMLUnit กับ Selenium
ขั้นตอน 1) In Eclipseคัดลอกโค้ดต่อไปนี้ เพิ่มไฟล์ไลบรารี selenium มาตรฐานลงในโปรเจ็กต์ ไม่จำเป็นต้องมีไฟล์ jar เพิ่มเติม
package htmldriver; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.htmlunit.HtmlUnitDriver; public class htmlUnitYest { public static void main(String[] args) { // Creating a new instance of the HTML unit driver WebDriver driver = new HtmlUnitDriver(); // Navigate to Google driver.get("http://www.google.com"); // Locate the searchbox using its name WebElement element = driver.findElement(By.name("q")); // Enter a search query element.sendKeys("Guru99"); // Submit the query. Webdriver searches for the form using the text input element automatically // No need to locate/find the submit button element.submit(); // This code will print the page title System.out.println("Page title is: " + driver.getTitle()); driver.quit(); } }
ขั้นตอนที่ 2) เรียกใช้โค้ด คุณจะสังเกตเห็นว่าไม่มีการเปิดเบราว์เซอร์และผลลัพธ์จะแสดงในคอนโซล
ประโยชน์ของไดรเวอร์หน่วย Html:
- เนื่องจากไม่ได้ใช้ GUI ใด ๆ ในการทดสอบ การทดสอบของคุณจะทำงานในพื้นหลังโดยไม่มีการรบกวนการมองเห็น
- เมื่อเปรียบเทียบกับการดำเนินการอินสแตนซ์อื่นๆ ทั้งหมดจะเร็วกว่า
- หากต้องการรันการทดสอบผ่านไดรเวอร์ HtmlUnit คุณสามารถเลือกเบราว์เซอร์เวอร์ชันอื่นได้
-
เป็นแพลตฟอร์มที่เป็นอิสระและง่ายต่อการดำเนินการทดสอบหลายรายการพร้อมกัน เหมาะสำหรับ โหลดการทดสอบ.
ข้อ จำกัด :
- ไม่สามารถจำลองเบราว์เซอร์อื่นได้ Javaพฤติกรรมของสคริปต์
PhantomJS
PhantomJS เป็นเบราว์เซอร์ที่ไม่มีหัวด้วย JavaScript API เป็นโซลูชันที่เหมาะสมที่สุดสำหรับการทดสอบเว็บไซต์แบบ Headless การเข้าถึงและการจัดการหน้าเว็บ และมาพร้อมกับ DOM API มาตรฐาน
ในการใช้ PhantomJS กับ Seleniun เราต้องใช้ GhostDriver GhostDriver คือการนำโปรโตคอล Webdriver Wire ไปใช้งานใน JS แบบง่ายสำหรับ PhantomJS
PhatomJS เวอร์ชันล่าสุดมี แบบบูรณาการ GhostDriver และ ไม่จำเป็นต้องติดตั้งแยกต่างหาก
นี่คือวิธีการทำงานของระบบ-
ขั้นตอนการวิ่ง Selenium ด้วย PhatomJS
ขั้นตอน 1) คุณต้องการ Eclipse กับ Selenium การติดตั้ง
ขั้นตอน 2) ดาวน์โหลด PhantomJS Good Farm Animal Welfare Awards
ขั้นตอน 3) แตกโฟลเดอร์ที่ดาวน์โหลดมาเป็นไฟล์โปรแกรม
ขั้นตอน 4) ดาวน์โหลดไดรเวอร์ PhantomJS จาก Good Farm Animal Welfare Awards- เพิ่มขวดในโครงการของคุณ
ขั้นตอน 5) วางโค้ดต่อไปนี้ลงใน Eclipse
package htmldriver; import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.phantomjs.PhantomJSDriver; public class phantom { public static void main(String[] args) { File file = new File("C:/Program Files/phantomjs-2.0.0-windows/bin/phantomjs.exe"); System.setProperty("phantomjs.binary.path", file.getAbsolutePath()); WebDriver driver = new PhantomJSDriver(); driver.get("http://www.google.com"); WebElement element = driver.findElement(By.name("q")); element.sendKeys("Guru99"); element.submit(); System.out.println("Page title is: " + driver.getTitle()); driver.quit(); } }
ขั้นตอน 6) เรียกใช้รหัส คุณจะสังเกตได้ว่าเอาต์พุตแสดงอยู่ในคอนโซลและไม่มีการเปิดเบราว์เซอร์
หมายเหตุ: ในการใช้งานครั้งแรก คุณอาจได้รับคำเตือนด้านความปลอดภัยจากการตั้งค่าของคุณ Windows เพื่ออนุญาตให้รัน PhantomJS คลิกที่อนุญาตการเข้าถึง
หลายองค์กรใช้ Phantom.JS เพื่อวัตถุประสงค์ต่างๆ เช่น
- การทดสอบแบบไม่มีหัว
- จับภาพหน้าจอ
- หน้าอัตโนมัติ
- ตรวจสอบเครือข่าย
- เพื่อแสดงผลภาพหน้าจอแดชบอร์ดสำหรับผู้ใช้
- เพื่อรันการทดสอบหน่วยบนบรรทัดคำสั่ง
- เพื่อสร้างคู่มือพนักงานจาก HTML เป็น PDF
- รวมกับ QUnit สำหรับชุดทดสอบ
สรุป
เพื่อทดสอบแอปพลิเคชันอย่างรวดเร็วในเบราว์เซอร์ต่าง ๆ และไม่มีภาพสะดุด เบราว์เซอร์แบบไม่มีหัว การทดสอบ เนื่องจากมีความเร็ว ความแม่นยำ และเข้าถึงฟีเจอร์ต่างๆ ได้ง่าย ไดรเวอร์ยูนิต HTML และ PhantomJS จึงได้รับความนิยมในการทดสอบอัตโนมัติของเบราว์เซอร์แบบไม่มีส่วนหัว เมื่อทำตามขั้นตอนง่ายๆ เหล่านี้ คุณจะทราบว่าเครื่องมือเหล่านี้สามารถผสานรวมกับเครื่องมืออื่นๆ ได้ง่ายเพียงใด และสามารถรันโค้ดทดสอบได้อย่างไร