การตั้งค่า Selenium Grid สำหรับการทดสอบ Selenium แบบกระจาย



บล็อกนี้จะช่วยให้คุณเข้าใจถึงความต้องการ Selenium Grid และประโยชน์ของมัน อ่านเพื่อตั้งค่า Selenium Grid แรกของคุณโดยการกำหนดค่าฮับและโหนด

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

  1. เหตุใดจึงควรใช้ Selenium Grid?
  2. Selenium Grid คืออะไร?
  3. Selenium Grid 1 เทียบกับ Selenium Grid 2
  4. สถาปัตยกรรมของ Selenium Grid
  5. การสร้าง Selenium Grid

ทำไมและเมื่อใดจึงควรใช้ Selenium Grid

มีเว็บเบราว์เซอร์จำนวนมากที่ใช้งานอยู่ในปัจจุบัน ผู้ใช้อาจใช้ Chrome หรือ Firefox หรือ Safari หรือ Opera หรือแม้แต่ Internet Explorer เพื่ออ่านบล็อกนี้ พวกเขาอาจใช้เบราว์เซอร์เวอร์ชันต่างๆ นอกจากนี้ยังอาจเรียกใช้เบราว์เซอร์เหล่านี้บนระบบปฏิบัติการใด ๆ ไม่ว่าจะเป็น Windows หรือ Mac หรือ Ubuntu หรือการแจกจ่าย Linux อื่น ๆ





เทคโนโลยีล่าสุดในปัญญาประดิษฐ์

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

คุณควร!



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

นอกจากนี้ยังมีอีกคำถามหนึ่งที่เกิดขึ้นการตั้งค่าโครงสร้างพื้นฐานโครงข่าย Selenium โดยใช้ระบบท้องถิ่นเป็นไปได้หรือไม่? การบำรุงรักษากริดด้วยเบราว์เซอร์และระบบปฏิบัติการที่จำเป็นทั้งหมดถือเป็นความท้าทาย สำหรับสิ่งนี้มีแพลตฟอร์มออนไลน์หลายแพลตฟอร์มที่ให้บริการ Selenium Grid ออนไลน์ที่คุณสามารถเข้าถึงเพื่อเรียกใช้สคริปต์อัตโนมัติของซีลีเนียมได้ ตัวอย่างเช่นคุณสามารถใช้ไฟล์ LambdaTest . มีสภาพแวดล้อมเบราว์เซอร์มากกว่า 2,000 แบบซึ่งคุณสามารถเรียกใช้การทดสอบและการทดสอบข้ามเบราว์เซอร์โดยอัตโนมัติอย่างแท้จริง

Selenium Grid คืออะไร?

Selenium Grid เป็นอีกหนึ่งเครื่องมือที่สำคัญในชุดเครื่องมือของ Selenium Grid สามารถประสานการทดสอบ WebDriver / การทดสอบ RC ซึ่งสามารถทำงานพร้อมกันบนเว็บเบราว์เซอร์หลายตัวหรือสามารถเริ่มต้นบนระบบปฏิบัติการที่แตกต่างกันหรือแม้แต่โฮสต์บนเครื่องอื่น



กริดทำงาน - ตารางซีลีเนียมแล้วมันได้ผลอย่างไร? Grid ใช้สถาปัตยกรรม Hub-Node โดยที่มีหนึ่ง Hub ซึ่งทำหน้าที่เป็นหลักและโหนดอย่างน้อยหนึ่งโหนดทำหน้าที่เป็นทาส

สิ่งนี้หมายความว่าถ้าคุณมีงาน / การทดสอบทั้งหมด 100 รายการที่ต้องดำเนินการการทดสอบสามารถดำเนินการได้พร้อมกันใน 5 เครื่องโดยแต่ละเครื่องจะทำการทดสอบ 20 ครั้ง ในความเป็นจริงคุณสามารถดำเนินการทดสอบเหล่านี้ในระบบปฏิบัติการและเบราว์เซอร์ต่างๆ แต่ละเครื่องในที่นี้อาจเป็นระบบปฏิบัติการที่แตกต่างกันและภายในแต่ละระบบปฏิบัติการสามารถทำการทดสอบบนเบราว์เซอร์ที่แตกต่างกันได้

การกระทำนี้จะช่วยประหยัดเวลาในการดำเนินการทดสอบได้อย่างง่ายดาย หากคุณพิจารณาจากตัวอย่างข้างต้นเราสามารถลดเวลาในการดำเนินการลงเหลือประมาณ 1/5 ของเวลาทั้งหมดที่ใช้ในการดำเนินการทดสอบบนเครื่องเดียว

หากคุณจำได้จากบล็อกก่อนหน้านี้ฉันได้กล่าวถึงหลายครั้งนับไม่ถ้วนว่ากริดเป็นส่วนหนึ่งของโครงการซีลีเนียมตั้งแต่เริ่มก่อตั้งเช่นตั้งแต่ซีลีเนียม v1 Selenium Grid ยังเป็นส่วนหนึ่งของ Selenium v2 และปัจจุบันเป็นส่วนหนึ่งของ Selenium v3 ไม่มีความแตกต่างกันมากใน v2 และ v3 ของ Selenium Grid อย่างไรก็ตาม v1 มีความแตกต่างค่อนข้างมาก จึงขอเข้าใจความแตกต่างระหว่าง v1 และ v2

Selenium Grid 1 เทียบกับ Selenium Grid 2

ความแตกต่างพื้นฐานระหว่าง Grid v1.0 และ v2.0 คือ RC ถูกใช้ใน Grid 1 และ WebDriver ถูกใช้ใน Grid 2 ตารางด้านล่างอธิบายความแตกต่างโดยละเอียด

ตาราง 1 ตารางที่ 2
ต้องติดตั้ง Apache Antไม่จำเป็นต้องติดตั้ง Apache Ant
มีรีโมทคอนโทรลของตัวเอง (ซึ่งแตกต่างจากเซิร์ฟเวอร์ RC)มาพร้อมกับไฟล์ jar ของ Selenium Server
รองรับเฉพาะคำสั่ง Selenium RCรองรับทั้ง Selenium RC และสคริปต์ WebDriver
คุณสามารถทำให้เบราว์เซอร์อัตโนมัติได้เพียงตัวเดียวต่อรีโมทคอนโทรลคุณสามารถทำงานอัตโนมัติได้สูงสุด 5 เบราว์เซอร์ต่อรีโมทคอนโทรล


ตอนนี้เราได้เรียนรู้ถึงความแตกต่างพื้นฐานระหว่างสองเวอร์ชันแล้วให้เราดำดิ่งสู่ Selenium Grid.

สถาปัตยกรรมของ Selenium Grid

ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ฟังก์ชันกริดบนพื้นฐานของฮับเดียวและหลายโหนด แต่ Hub และ Nodes คืออะไรและทำหน้าที่อะไร?

ฮับ

ในการตั้งค่า Grid ใด ๆ สามารถมีได้เพียง Hub เดียวและนั่นจะเป็นจุดศูนย์กลางในการตั้งค่า Grid นั้น การทดสอบทั้งหมดที่จำเป็นต้องดำเนินการควรโหลดที่นี่ แม้ว่าจะมีการโหลดการทดสอบที่นี่ แต่ก็จะดำเนินการที่โหนดเท่านั้น เราสามารถกำหนดค่าเครื่องโฮสต์ใด ๆ ให้เป็น Hub ของเราและจะประสานกิจกรรมของการดำเนินการทดสอบในโฮสต์อื่น ๆ

เพื่อให้สิ่งนี้เกิดขึ้นเราต้องกำหนดค่าฮับก่อนจากนั้นสร้างโหนดอื่นเพื่อลงทะเบียนกับฮับ ก่อนที่ฉันจะลงรายละเอียดมากเกินไปให้ฉันแสดงคำสั่งเพื่อกำหนดค่าฮับ

การกำหนดค่าฮับ

ก่อนอื่นคุณต้องดาวน์โหลดไฟล์ JAR ของเซิร์ฟเวอร์ Selenium จากเว็บไซต์ของ Seleniumhq ลิงค์คือ ที่นี่ . คุณต้องตรวจสอบให้แน่ใจว่าได้ติดตั้ง Java ในระบบของคุณและกำหนดตัวแปรสภาพแวดล้อมแล้ว

เมื่อคุณดาวน์โหลดไฟล์ jar แล้วคุณต้องวางไว้ในไดเร็กทอรีที่เหมาะสม เพื่อความสะดวกของฉันฉันได้ดาวน์โหลดและวางไว้ในโฟลเดอร์ Selenium ใน C Drive ขอแนะนำให้คุณดาวน์โหลดไฟล์ jar และวางไว้ในไดเร็กทอรีที่คล้ายกันในโหนดอื่น ๆ ทั้งหมด

java ide ที่ดีที่สุดสำหรับ windows

ในการกำหนดค่า Hub คุณต้องเรียกใช้คำสั่งในพรอมต์คำสั่งของ windows คำสั่งมีอยู่ในตัวอย่างด้านล่าง

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

ซีลีเนียมเซิร์ฟเวอร์แบบสแตนด์อโลน 3.4.0.jar คือชื่อของไฟล์ jar ที่ฉันดาวน์โหลด
-บทบาท แฟล็กถูกใช้เพื่อตั้งค่าเครื่องโฮสต์นั้นเป็นฮับ เมื่อคุณกด Enter คุณจะได้ผลลัพธ์ด้านล่างบนหน้าจอของคุณ

ในกรณีที่คุณไม่สังเกตเห็นภาพหน้าจอด้านบนให้ดูอีกครั้ง มันบอกว่า ' - โหนดควรลงทะเบียนไปที่ http://192.168.0.11:4444/grid/register ‘. เมื่อกำหนดค่าฮับแล้วเราจำเป็นต้องตั้งค่าโหนดและเชื่อมต่อกับฮับนี้

192.168.0.11 คือที่อยู่ IP ของ Hub และทุกโหนดควรเชื่อมต่อกับที่อยู่ IP นี้ 4444 เป็นหมายเลขพอร์ตเริ่มต้นที่ Selenium Grid ได้รับการโฮสต์และรับฟังคำขอ หากบริการอื่น ๆ กำลังทำงานบนพอร์ต 4444 และคุณต้องการให้ Selenium Grid โฮสต์บนพอร์ตอื่นคุณสามารถทำได้โดยระบุ -ท่าเรือ แฟล็กตามด้วยหมายเลขพอร์ต

โหนด

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

การกำหนดค่าโหนด

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

java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

คำสั่งนี้มีความแตกต่างเพียงเล็กน้อยเมื่อเทียบกับคำสั่งที่จำเป็นในการเริ่มต้นฮับ
-Dwebdriver.chrome.driver = E: chromedriver.exe ใช้เพื่อกำหนดเส้นทางของไดรเวอร์เบราว์เซอร์ เช่นเดียวกับการกำหนดเส้นทางของไดรเวอร์เบราว์เซอร์ในโค้ด WebDriver ของคุณคุณระบุไว้ที่นี่เพื่อเปิดใช้งาน Node เพื่อทำการทดสอบ ตั้งแต่ Selenium v3 เป็นต้นไปคุณต้องดาวน์โหลดเบราว์เซอร์ไดรเวอร์สำหรับ Firefox ไดรเวอร์เบราว์เซอร์สำหรับ Firefox คือไดรเวอร์ Gecko อย่างไรก็ตามในเวอร์ชัน 1 และ 2 คุณต้องตั้งค่าไดรเวอร์ของเบราว์เซอร์สำหรับเบราว์เซอร์ทั้งหมดที่ไม่ใช่ Firefox
โหนด -role แฟล็กถูกใช้เพื่อตั้งค่าเครื่องโฮสต์นั้นเป็นโหนด
-hub http://192.168.0.11:4444/grid/register แจ้ง Node เพื่อเชื่อมต่อกับ Hub โดยใช้ที่อยู่ IP ของ Hub จุดสำคัญที่ควรทราบก็คือหากคุณเปิดใช้งานโหนดใด ๆ บนเครื่องเดียวกันกับฮับของคุณคุณสามารถระบุ ‘ -hub http: // localhost: 4444 / grid / register ‘ในคำสั่งแทนที่อยู่ IP ของ Hub

เมื่อคุณกด Enter คุณจะได้รับผลลัพธ์ด้านล่างในพรอมต์คำสั่ง

ถึงตอนนี้โหนดจะเชื่อมต่อกับฮับแล้ว คุณสามารถตรวจสอบได้โดยกลับไปที่พรอมต์คำสั่งที่ใช้สำหรับเริ่มต้นฮับและคุณจะสังเกตเห็นข้อความต่อไปนี้: ‘ ลงทะเบียนโหนด http://192.168.0.11:5555 ‘.

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

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

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

การสร้าง Selenium Grid

ฉันรันสคริปต์ของฉันใน Eclipse IDE การเรียกใช้สคริปต์นี้อาศัยแพ็คเกจไลบรารีที่สำคัญสองชุด พวกเขาคือ ความต้องการ วัตถุและ RemoteWebDriver วัตถุ.

DesiredCapabilities ใช้เพื่อตั้งค่าประเภทเบราว์เซอร์และ OS ของ Node ของเรา ในการนำเข้าวัตถุ DesiredCapabilities ให้ใช้รหัสด้านล่าง

นำเข้า org.openqa.selenium.remote.DesiredCapabilities

RemoteWebDriver ใช้เพื่อเลือก Node ที่เราต้องการดำเนินการทดสอบ ในการนำเข้าวัตถุ RemoteWebDriver ให้ใช้บรรทัดด้านล่างของรหัส

นำเข้า java.net.MalformedURLException นำเข้า java.net.URL นำเข้า org.openqa.selenium.remote.RemoteWebDriver

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

เมื่อคุณจัดวางโลโก้ของเบราว์เซอร์ใด ๆ ที่มีอยู่ในคอนโซล Selenium Hub คุณจะได้รับรายละเอียดเช่น browserName และ แพลตฟอร์ม ของโหนดที่คุณต้องการทำให้เป็นอัตโนมัติ รูปภาพยังระบุจำนวนอินสแตนซ์ของเบราว์เซอร์ที่ฉันสามารถเปิดได้ในโหนดของฉัน ฉันสามารถกำหนดค่าได้สูงสุด 5 chrome, 5 Firefox และ 1 อินสแตนซ์ Internet Explorer รายละเอียดเหล่านี้มีอยู่ในภาพหน้าจอด้านล่าง

คุณสามารถใช้โค้ดในส่วนย่อยด้านล่างเพื่อตั้งค่า Grid แรกของคุณ

แพคเกจการนำเข้า GridTest org.testng.annotations AfterTest import org.testng.annotations BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesiredCapabilities import org.openqa.selenium.remote.RemoteWebDriver คลาสสาธารณะ TestGrid {Static WebDriver driver static String nodeUrl @BeforeTest public void setup () พ่น {MalformedURLException nodeUrl = 'http://192.168.0.11:5555/wd/hub' ความสามารถของ DesiredCapabilities = DesiredCapabilities.chrome () ความสามารถ.setBrowserName ('chrome') ความสามารถ setPlatform (Platform.WINDOWS) = RemoteWebDriver ใหม่ (URL ใหม่ (nodeUrl) ), ความสามารถ)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest โมฆะสาธารณะ afterTest () {driver.quit ()}}

ฉันได้แบ่งสคริปต์การทดสอบทั้งหมดออกเป็นคำอธิบายประกอบการทดสอบสามรายการ @BeforeTest, @Test และ @AfterTest ใน @BeforeTest ฉันได้ใช้วัตถุ DesiredCapablities และ RemoteWebDriver เพื่อกำหนดค่าโหนดของฉัน ใน @Test ฉันขอให้ Node นำทางไปยังโฮมเพจของ Edureka และยืนยันชื่อของเพจ ใน @AfterTest ฉันได้ขอให้ Node ออกจากอินสแตนซ์ของเบราว์เซอร์

เมื่อการทดสอบของคุณผ่านการดำเนินการคุณจะได้ผลลัพธ์ด้านล่าง

18 พฤษภาคม 2560 15:09:07 น. org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Detected dialect: OSS PASSED: simpleTest ===================== ========================== การทดสอบการทดสอบเริ่มต้นทำงาน: 1, ความล้มเหลว: 0, ข้าม: 0 ========== ======================================================= ================================== ชุดค่าเริ่มต้นการทดสอบทั้งหมดทำงาน: 1, ความล้มเหลว: 0, ข้าม: 0 = ==============================================

เนื่องจากเป็นการทดสอบ TestNG คุณจะได้รับรายงานการทดสอบโดยละเอียดที่คล้ายกับภาพหน้าจอด้านล่าง

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

คุณสามารถดูวิดีโอด้านล่างเพื่อชมการสาธิตวิธีสร้าง Selenium Grid ผู้สอนที่ส่งวิดีโออธิบายแนวคิดเดียวกันกับที่อธิบายไว้ในบล็อกนี้

บทแนะนำ Selenium Grid สำหรับผู้เริ่มต้น | บทช่วยสอนซีลีเนียม | Edureka

ดังนั้นเราจึงมาถึงจุดสิ้นสุดของบล็อก Selenium Grid นี้ หากคุณมีข้อสงสัยหรือปัญหาเกี่ยวกับโค้ด / เนื้อหาของบล็อกชุดนี้โปรดทิ้งไว้ในส่วนความคิดเห็นด้านล่างและเราจะแก้ปัญหาของคุณโดยเร็วที่สุด

kotlin ดีกว่า java

หากคุณต้องการเรียนรู้ซีลีเนียมและสร้างอาชีพในโดเมนการทดสอบลองดูแบบโต้ตอบสดออนไลน์ของเรา ที่นี่มาพร้อมกับการสนับสนุน 24 * 7 เพื่อแนะนำคุณตลอดระยะเวลาการเรียนรู้ของคุณ

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นแล้วเราจะติดต่อกลับไป