มาลองการใช้งานหลาย Browser แบบ Parallel ในรูปของ Selenium Grid

Ekawat Pat.
Arcadia Software Development
3 min readSep 16, 2019

เราจะใช้งาน Robot framework ทดสอบโดยการเปิดหลายๆ browser ซึ่ง browser ที่จะใช้งานนั้นจะมี Google Chrome, Firefox และ Internet explorer หากจะใช้งานเราต้องติดตั้ง web driver เสียก่อน และจะ run ทดสอบแบบ Parallel ได้ เราจะต้องติดตั้ง Pabot และในส่วนสุดท้ายคือ จะ run ทดสอบแบบ Parallel ในหลาย nodeโดยใช้ Selenium Grid เอาล่ะ เรามาดูกันว่าแต่ละตัวคืออะไรกันดีกว่าครับ

Web driver

เป็นส่วนที่ไว้เอาสำหรับติดต่อกับ Web browser หากเราจะทำการทดสอบเราต้องติดตั้ง web driver เพื่อเรียกใช้ browser ที่เราจะใช้ ในการทดสอบ

Pabot

สำหรับ Pabot นั้นเป็น library ที่ใช้สำหรับการทำ parallel ของตัว Robot Framework เพื่อ run หลาย ๆ test case พร้อมกัน โดยมีจุดประสงค์ที่จะช่วยลดระยะเวลาในการทดสอบ

Photo Credit: https://github.com/mkorpela/pabot

Selenium Grid

เครื่องมือที่เอาไว้ช่วยจัดการกับการทำงานจำนวนมาก ๆ หรือการที่ทดสอบที่มีจำนวนมาก ๆ โดยประกอบ 2 ส่วน

  1. Hub ทำหน้าที่เป็น server ในการควบคุมเครือข่ายที่จะทดสอบ โดยจะรับ request แล้วส่งไปให้ node ไว้สำหรับทำการทดสอบ ซึ่งตัว hub จะไปจัดการหา node ที่เหมาะสมที่ตรงกับที่ request ที่ส่งมา
  2. Node ทำหน้าที่รับ request ที่ส่งมาจาก hub และทำงานตามเงื่อนไขหรือคำสั่งที่ถูกส่งมา

ส่วนต่อไปจะเป็นขั้นตอนการติดตั้ง

Web driver

ดาวน์โหลด web driver ของแต่ละ browser ที่ต้องการจะทดสอบ โดยทั้งนี้ ผมจะทำการดาวน์โหลดทั้งสาม browser ครับ Google Chrome, Firefox และ Internet explorer

เมื่อทำการดาวน์โหลดเสร็จแล้ว นำ file chromedriver.exe, geckodriver.exe, IEDriverServer.exe ใส่ไว้ในโฟลเดอร์ C:\Python27\Scripts และอย่าลืมไปตั้ง PATH Environment Variables กันด้วยนะครับ

Pabot

ติดตั้งด้วยคำสั่งนี้ ก็เป็นอันเสร็จเรียบร้อย

pip install -U robotframework-pabot

Selenium Grid

ดาวน์โหลด Selenium Standalone Server จะได้ selenium-server-standalone.jar (version : 3.141.59) จากนั้นย้ายไปที่ folder C:\SeleniumServer

ขั้นตอนต่อไป ถึงวิธีการใช้งานแล้วครับ

ก่อนอื่นเราต้องทำการสร้าง hub ขึ้นมาเสียก่อน โดยเปิด Command Prompt แล้วเข้าไปที่ folder C:\SeleniumServer จากนั้น run ด้วยคำสั่ง

java -jar selenium-server-standalone-3.141.59.jar -role hub

จากนั้นเปิด Command Prompt ขึ้นมาใหม่ และทำการลงทะเบียน node

java -jar  selenium-server-standalone-3.141.59.jar   -role node -hub http://localhost:4444/grid/register

เปิด http://localhost:4444/grid/console# เพื่อ check ว่ามี node อยู่กี่ตัว

หากเราอยากกำหนดว่าอยากให้ node ของเรานั้นรองรับได้แค่เฉพาะ Internet explorer อย่างเดียว ก็สามารถทำได้ โดยเราทำการสร้าง file nodeconfig.json ไว้ที่ folder C:\SeleniumServer

{
"capabilities":
[
{
"browserName": "internet explorer",
"platform": "WINDOWS",
"maxInstances": 1,
"seleniumProtocol": "WebDriver"
}
],
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 50,
"port": 5555,
"register": true,
"registerCycle": 5000,
"hub": "http://localhost:4444",
"nodeStatusCheckTimeout": 5000,
"nodePolling": 5000,
"role": "node",
"unregisterIfStillDownAfter": 60000,
"downPollingLimit": 2,
"debug": false,
"servlets" : [],
"withoutServlets": [],
"custom": {}
}

โดยเปิด Command Prompt แล้วไปที่ folder C:\SeleniumServer จากนั้น run ด้วยคำสั่ง เราก็จะได้ node ที่เราconfig browser ของเราแล้ว

java -jar  selenium-server-standalone-3.141.59.jar   -role node  -nodeConfig nodeconfig.json   -hub http://localhost:4444/grid/register

ลำดับต่อไปจะเริ่มทำการทดสอบ จากตัวอย่างจะอยู่ใน test case ใน robot framework เราต้องระบุ remote url ของเราเสียก่อน

จากนั้นใช้คำสั่งนี้ เปิด Command Prompt ไปที่folder robot เพื่อจะทำการทดสอบ Parallel ในระดับ test case

pabot --testlevelsplit test.robot

ในตัวอย่างนี้จะทำการทดสอบ 5 test case

ก็จบกันไปแล้วนะครับ สำหรับการใช้การใช้งานหลาย Browser แบบ Parallel ในรูปของ Selenium Grid

บทความหน้าจะเป็นอะไรต่อไป ก็ฝากติดตามกันด้วยนะครับผม

ตัวอย่าง code อยู่ที่ Github เข้าไปดูกันได้นะครับ

Reference Website : https://www.seleniumhq.org/docs/07_selenium_grid.jsp

--

--