Selenium บทช่วยสอนกริด: ตั้งค่าฮับและโหนด (ตัวอย่าง)
ความหมายของ Selenium กริด?
Selenium ตะแกรง เป็นส่วนหนึ่งของ Selenium ชุดโปรแกรมที่เชี่ยวชาญในการรันการทดสอบหลายรายการพร้อมกันบนเบราว์เซอร์ ระบบปฏิบัติการ และเครื่องต่างๆ โดยทำได้โดยการกำหนดเส้นทางคำสั่งของอินสแตนซ์เบราว์เซอร์ระยะไกลซึ่งเซิร์ฟเวอร์ทำหน้าที่เป็นฮับ ผู้ใช้จำเป็นต้องกำหนดค่าเซิร์ฟเวอร์ระยะไกลเพื่อดำเนินการทดสอบ
Selenium Grid มี 2 เวอร์ชัน – Grid 1 และ Grid 2 ที่ใหม่กว่า เราจะเน้นเฉพาะ Grid 2 เท่านั้น เนื่องจาก Grid 1 กำลังจะค่อยๆ ถูกเลิกใช้งานโดย Selenium ทีม.
Selenium ตะแกรง Archiเทคเจอร์
Selenium กริดมีฮับและโหนด Archiเทคเจอร์

Hub
- ฮับคือจุดศูนย์กลางที่คุณโหลดการทดสอบของคุณเข้าไป
- ควรมีฮับเดียวในกริดเท่านั้น
- ฮับเปิดตัวเฉพาะในเครื่องเดียว เช่น คอมพิวเตอร์ที่มีระบบปฏิบัติการ Windows 7 และเบราว์เซอร์ของใครคือ IE
- เครื่องที่มีฮับคือที่ที่จะดำเนินการทดสอบ แต่คุณจะเห็นว่าเบราว์เซอร์ทำงานอัตโนมัติบนโหนด
โหนด
- โหนดคือ Selenium อินสแตนซ์ที่จะดำเนินการทดสอบที่คุณโหลดบนฮับ
- อาจมีโหนดหนึ่งหรือหลายโหนดในตารางก็ได้
- โหนดสามารถเปิดใช้งานได้บนเครื่องหลายเครื่องที่มีแพลตฟอร์มและเบราว์เซอร์ที่แตกต่างกัน
- เครื่องที่ใช้งานโหนดไม่จำเป็นต้องเป็นแพลตฟอร์มเดียวกันกับฮับ
Selenium Grid ใช้แนวคิดฮับโหนดที่คุณรันการทดสอบบนเครื่องเดียวที่เรียกว่า a ดุมแต่การดำเนินการจะดำเนินการโดยเครื่องต่างๆ ที่เรียกว่า โหนด.
วิธีการตั้งค่า Selenium กริด?
ในส่วนนี้คุณจะใช้ 2 เครื่อง เครื่องแรกจะเป็นระบบที่จะรันฮับในขณะที่เครื่องอื่นจะรันโหนด เพื่อความง่าย ให้เราเรียกเครื่องที่ฮับทำงานเป็น “เครื่อง A” ในขณะที่เครื่องที่โหนดทำงานจะเป็น “เครื่อง B” สิ่งสำคัญคือต้องจดบันทึกที่อยู่ IP ของตนด้วย สมมติว่าเครื่อง A มีที่อยู่ IP 192.168.1.3 ในขณะที่เครื่อง B มี IP 192.168.1.4
ขั้นตอน 1) ดาวน์โหลด Selenium เซิร์ฟเวอร์จาก Good Farm Animal Welfare Awards.
ขั้นตอน 2) คุณสามารถวาง Selenium ไฟล์เซิร์ฟเวอร์ .jar ได้ทุกที่ในฮาร์ดไดรฟ์ของคุณ แต่สำหรับจุดประสงค์ของบทช่วยสอนนี้ ให้วางไว้บนไดรฟ์ C ของทั้งเครื่อง A และเครื่อง B หลังจากทำเช่นนี้ คุณก็ติดตั้งเสร็จแล้ว Selenium กริด ขั้นตอนต่อไปจะเป็นการเปิดฮับและโหนด
ขั้นตอน 3)
- ตอนนี้เรากำลังจะเปิดตัวฮับ ไปที่เครื่อง A โดยใช้ command prompt นำทางไปยังรูทของไดรฟ์ C ของเครื่อง A เพราะนั่นคือไดเร็กทอรีที่เราวาง Selenium เซิร์ฟเวอร์
- บนพรอมต์คำสั่ง ให้พิมพ์ java -jar selenium-server-standalone-2.30.0.jar - บทบาทฮับ
- ฮับควรจะเปิดใช้งานได้สำเร็จ พรอมต์คำสั่งของคุณควรมีลักษณะคล้ายกับภาพด้านล่าง
ขั้นตอน 4) อีกวิธีในการตรวจสอบว่าฮับกำลังทำงานอยู่หรือไม่คือการใช้เบราว์เซอร์ Selenium ตามค่าเริ่มต้น Grid จะใช้พอร์ตของเครื่อง A 4444 สำหรับเว็บอินเตอร์เฟส เพียงเปิดเบราว์เซอร์แล้วไปที่ http://localhost:4444/grid/console
นอกจากนี้ คุณสามารถตรวจสอบได้ว่าเครื่อง B สามารถเข้าถึงเว็บอินเทอร์เฟซของฮับได้หรือไม่โดยเปิดเบราว์เซอร์ที่นั่น และไปที่ตำแหน่ง “iporhostnameofmachineA” ควรเป็นที่อยู่ IP หรือชื่อโฮสต์ของเครื่องที่ฮับทำงานอยู่ เนื่องจากที่อยู่ IP ของเครื่อง A คือ 192.168.1.3 ดังนั้นบนเบราว์เซอร์บนเครื่อง B คุณควรพิมพ์ http://192.168.1.3:4444/grid/console
ขั้นตอน 5)
- ตอนนี้เมื่อตั้งค่าฮับแล้ว เราจะเปิดตัวโหนด ไปที่เครื่อง B แล้วเปิดพรอมต์คำสั่งที่นั่น
- ไปที่รูทของ Drive C แล้วพิมพ์รหัสด้านล่าง เราใช้ที่อยู่ IP 192.168.1.3 เพราะนั่นคือที่ที่ฮับทำงานอยู่ นอกจากนี้เรายังใช้พอร์ต 5566 แม้ว่าคุณสามารถเลือกหมายเลขพอร์ตฟรีใดก็ได้ที่คุณต้องการก็ตาม
- หมายเหตุ: ตอนนี้คุณต้องกำหนดเส้นทางให้กับไดรเวอร์ Gecko หากใช้งาน Firefox- นี่คือรหัสอัปเดตที่จำเป็นต้องใช้
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566
- เมื่อคุณกด Enter พรอมต์คำสั่งของคุณควรคล้ายกับภาพด้านล่าง
ขั้นตอน 6) ไปที่ Selenium ตารางเว็บอินเตอร์เฟสและรีเฟรชหน้า คุณควรเห็นสิ่งนี้
ณ จุดนี้ คุณได้กำหนดค่ากริดแบบธรรมดาแล้ว ตอนนี้คุณพร้อมที่จะรันการทดสอบระยะไกลบนเครื่อง B แล้ว
ควรใช้เมื่อใด Selenium กริด?
คุณควรใช้ Selenium กริดเมื่อคุณต้องการทำอย่างใดอย่างหนึ่งหรือทั้งสองอย่างต่อไปนี้:
- รันการทดสอบของคุณกับเบราว์เซอร์ ระบบปฏิบัติการ และเครื่องที่แตกต่างกันในเวลาเดียวกัน ซึ่งจะทำให้มั่นใจได้ว่าแอปพลิเคชันของคุณ การทดสอบ เข้ากันได้อย่างสมบูรณ์กับการผสมผสานระบบปฏิบัติการเบราว์เซอร์ที่หลากหลาย
- ประหยัดเวลาในการดำเนินการชุดทดสอบของคุณ- หากคุณตั้งค่า Selenium กริดที่จะรัน เช่น ทดสอบ 4 ครั้งในแต่ละครั้ง จากนั้นคุณจะสามารถทำทั้งชุดให้เสร็จเร็วขึ้นประมาณ 4 เท่า
ตาราง 1.0 กับตาราง 2.0
ต่อไปนี้เป็นความแตกต่างหลักระหว่าง Selenium ตารางที่ 1 และ 2
ตาราง 1 | ตาราง 2 |
---|---|
Selenium Grid 1 มีรีโมทคอนโทรลของตัวเองที่แตกต่างจาก Selenium เซิร์ฟเวอร์อาร์ซี เป็นสองโปรแกรมที่แตกต่างกัน | Selenium ตอนนี้ Grid 2 มาพร้อมกับ Selenium ไฟล์ jar เซิร์ฟเวอร์ |
คุณต้องติดตั้งและกำหนดค่า อาปาเช่ มดก่อนจึงจะสามารถใช้ Grid 1 ได้ | คุณไม่จำเป็นต้องติดตั้ง Apache Ant ใน Grid 2 |
สามารถรองรับได้เท่านั้น Selenium คำสั่ง RC/สคริปต์ | รองรับได้ทั้งสองอย่าง Selenium สคริปต์ RC และ WebDriver |
คุณสามารถตั้งค่าอัตโนมัติได้เพียงเบราว์เซอร์เดียวต่อรีโมทคอนโทรล | รีโมทคอนโทรลหนึ่งตัวสามารถเปิดใช้งานเบราว์เซอร์ได้สูงสุด 5 ตัวโดยอัตโนมัติ |
Selenium ตารางสามารถตั้งค่าได้สองวิธี รายการหนึ่งผ่านบรรทัดคำสั่งและอีกรายการผ่านไฟล์กำหนดค่า JSON
การออกแบบสคริปต์ทดสอบที่สามารถทำงานบนกริดได้
ในการออกแบบสคริปต์ทดสอบที่จะทำงานบนกริด เราจำเป็นต้องใช้ ความสามารถที่ต้องการ และ โปรแกรมควบคุมเว็บระยะไกล วัตถุ
- ความสามารถที่ต้องการ ใช้เพื่อกำหนดประเภทของ เบราว์เซอร์ และ OS ว่าเราจะทำให้เป็นอัตโนมัติ
- โปรแกรมควบคุมเว็บระยะไกล ใช้เพื่อตั้งค่าโหนด (หรือเครื่อง) ที่การทดสอบของเราจะรัน
ในการใช้งาน ความสามารถที่ต้องการ วัตถุ คุณต้องนำเข้าแพ็คเกจนี้ก่อน
ในการใช้งาน โปรแกรมควบคุมเว็บระยะไกล วัตถุ คุณต้องนำเข้าแพ็คเกจเหล่านี้
การใช้วัตถุ DesiredCapabilites
ไปที่เว็บอินเตอร์เฟสของ Grid และวางเมาส์เหนือรูปภาพของเบราว์เซอร์ที่คุณต้องการทำให้เป็นอัตโนมัติ รับทราบ แพลตฟอร์ม, และ ชื่อเบราว์เซอร์ แสดงโดยคำแนะนำเครื่องมือ
ในกรณีนี้ แพลตฟอร์มคือ “XP” และชื่อเบราว์เซอร์คือ “Firefox".
เราจะใช้แพลตฟอร์มและชื่อเบราว์เซอร์ใน WebDriver ของเราดังที่แสดงด้านล่าง (แน่นอนว่าคุณต้องนำเข้าแพ็คเกจที่จำเป็นก่อน)
การใช้วัตถุ RemoteWebDriver
นำเข้าแพ็คเกจที่จำเป็นสำหรับ RemoteWebDriver จากนั้นส่งวัตถุ DesiredCapabilities ที่เราสร้างไว้ด้านบนเป็นพารามิเตอร์สำหรับวัตถุ RemoteWebDriver
การรันกรณีทดสอบตัวอย่างบนกริด
ด้านล่างนี้เป็น WebDriver แบบธรรมดา ทดสอบ รหัสที่คุณสามารถสร้างได้ Eclipse บนเครื่อง A เมื่อคุณรันแล้ว ระบบอัตโนมัติจะดำเนินการบนเครื่อง B
import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.Assert; import org.testng.annotations.*; public class Grid_2 { WebDriver driver; String baseUrl, nodeURL; @BeforeTest public void setUpWthrows MalformedURLException { baseUrl = "http://newtours.demoaut.com/"; nodeURL = "http://192.168.1.4:5566/wd/hub"; DesiredCapabilities capability = DesiredCapabilities.firefox(); capability. setBrowserName("firefox"); capability. setPlatform(Platform.XP); driver = new RemoteWebDriver(new URL(nodeURL), capability); } @AfterTest public void afterTest() { driver.quit(); } @Test public void simpleTest() { driver.get(baseUr1); Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } }
การทดสอบควรจะผ่าน
Selenium การกำหนดค่ากริดโดยใช้ไฟล์ JSON
JSON ย่อมาจาก Javascript สัญกรณ์วัตถุ เป็นรูปแบบมาตรฐานที่ใช้สำหรับการแลกเปลี่ยนข้อมูลระหว่างเบราว์เซอร์และเว็บเซิร์ฟเวอร์ Selenium มีไฟล์ config JSON ในตัวที่ใช้ตั้งค่ากริด Selenium ได้
ด้านล่างนี้เป็นขั้นตอนการกำหนดค่ากริด Selenium โดยใช้ไฟล์ config JSON
ขั้นตอน 1) ดาวน์โหลดโค้ดสำหรับไฟล์กำหนดค่า JSON โดยใช้เส้นทางด้านล่าง
นี่คือรหัส
{ "port": 4444, "newSessionWaitTimeout": -1, "servlets" : [], "withoutServlets": [], "custom": {}, "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher", "registryClass": "org.openqa.grid.internal.DefaultGridRegistry", "throwOnCapabilityNotPresent": true, "cleanUpCycle": 5000, "role": "hub", "debug": false, "browserTimeout": 0, "timeout": 1800 }
ขั้นตอน 2) คัดลอกและวางโค้ดลงในโปรแกรมแก้ไขข้อความ เช่น Notepad ที่มีนามสกุล '.json'
ขั้นตอน 3)เปิดฮับโดยใช้คำสั่งด้านล่างโดยใช้พร้อมท์คำสั่ง
java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json
หมายเหตุ: Selenium ไฟล์ jar แบบสแตนด์อโลนและไฟล์ json จะต้องอยู่ในไดเร็กทอรีเดียวกัน
ขั้นตอน 4) หน้าจอด้านล่างจะปรากฏขึ้นเพื่อระบุว่าฮับได้รับการตั้งค่าเรียบร้อยแล้ว
ขั้นตอน 5) เปิดเว็บเบราว์เซอร์แล้วลองเชื่อมต่อกับ URL ด้านล่าง
http://192.168.43.223:4444/grid/console
หมายเหตุ: URL อาจแตกต่างกันไปในแต่ละเครื่อง ต้องใช้ URL ที่ตามด้วย 'Nodes should register to' บนหน้าจอด้านบน
ขั้นตอน 6) หน้าจอ Grid Console จะปรากฏขึ้นเพื่อระบุว่าฮับกำลังทำงานอยู่
กำหนดค่า NODES โดยใช้ JSON
ขั้นตอน 1) ดาวน์โหลดไฟล์การกำหนดค่าโหนดตัวอย่างที่จัดทำโดย Selenium โดยใช้ URL ด้านล่าง
หมายเหตุ: หากคุณใช้ SELENIUM 3.0 หรือสูงกว่า จะต้องใช้ไฟล์ JSON ด้านล่างนี้
ขั้นตอน 2) คัดลอกและวางโค้ดลงในโปรแกรมแก้ไขข้อความ เช่น Notepad และบันทึกไฟล์ที่มีนามสกุล '.json'
ขั้นตอน 3)
เรียกใช้คำสั่งด้านล่างบนพรอมต์คำสั่ง
Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json
หมายเหตุ: ก่อนที่จะรันคำสั่ง โปรดตรวจสอบให้แน่ใจว่าได้ดาวน์โหลดไดรเวอร์สำหรับแต่ละเบราว์เซอร์ลงในไดเร็กทอรีของเครื่องแล้ว
ขั้นตอน 4) หน้าจอด้านล่างจะปรากฏขึ้นเมื่อกดปุ่ม Enter
ขั้นตอน 5) นำทางไปยังคอนโซลกริดเพื่อตรวจสอบว่าโหนดได้รับการกำหนดค่าสำเร็จหรือไม่
เบราว์เซอร์จะแสดงบนคอนโซลกริด ดังนั้นเราจึงมั่นใจได้ว่าโหนดได้รับการกำหนดค่าสำเร็จ
กรณีทดสอบตัวอย่างเปิดอยู่ Selenium กริด:
package com.objectrepository.demo; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.RemoteWebDriver; import org.testng.Assert; import org.testng.annotations.*; public class SeleniumGrid { WebDriver driver; String baseURL, nodeURL; @BeforeTest public void setUp() throws MalformedURLException { baseURL = "https://demo.guru99.com/test/guru99home/"; nodeURL = "http://192.168.43.223:5566/wd/hub"; DesiredCapabilities capability = DesiredCapabilities.chrome(); capability.setBrowserName("chrome"); capability.setPlatform(Platform.WIN10); driver = new RemoteWebDriver(new URL(nodeURL), capability); } @AfterTest public void afterTest() { driver.quit(); } @Test public void sampleTest() { driver.get(baseURL); if (driver.getPageSource().contains("MOBILE TESTING")) { Assert.assertTrue(true, "Mobile Testing Link Found"); } else { Assert.assertTrue(false, "Failed: Link not found"); } } }
โค้ดด้านบนจะเปิดเบราว์เซอร์ Chrome และนำทางไปยัง URL ที่ระบุในตัวแปร 'baseURL' จากนั้นจะตรวจสอบว่าชื่อลิงก์ 'การทดสอบมือถือ' ปรากฏบนหน้าหรือไม่
URL ในตัวแปร 'nodeURL' สามารถแก้ไขได้เพื่อให้สะท้อนถึงที่อยู่ IP ของเครื่องระยะไกล สามารถตรวจสอบผลการทดสอบได้ตามค่าเริ่มต้น TestNG สร้างรายงานแล้ว
สรุป
- Selenium Grid ใช้สำหรับรันการทดสอบหลายๆ รายการพร้อมกันบนเบราว์เซอร์และแพลตฟอร์มที่แตกต่างกัน
- Grid ใช้แนวคิดฮับโหนด
- ฮับคือจุดศูนย์กลางที่คุณโหลดการทดสอบของคุณ
- โหนดคือ Selenium อินสแตนซ์ที่จะดำเนินการทดสอบที่คุณโหลดบนฮับ
- หากต้องการติดตั้ง Selenium Grid คุณเพียงแค่ต้องดาวน์โหลดไฟล์ Selenium ไฟล์ jar เซิร์ฟเวอร์ – ไฟล์เดียวกับที่ใช้ในการรัน Selenium การทดสอบ RC
- มี 2 วิธีในการตรวจสอบว่าฮับกำลังทำงานอยู่หรือไม่ วิธีแรกผ่านพรอมต์คำสั่ง และอีกวิธีผ่านเบราว์เซอร์
- หากต้องการรันสคริปต์ทดสอบบน Grid คุณควรใช้วัตถุ DesiredCapabilities และ RemoteWebDriver
- DesiredCapabilites ใช้เพื่อตั้งค่าประเภทของเบราว์เซอร์และระบบปฏิบัติการที่เราจะทำให้เป็นอัตโนมัติ
- RemoteWebDriver ใช้เพื่อตั้งค่าโหนด (หรือเครื่อง) ที่การทดสอบของเราจะรัน