Quantcast
Channel: cc :: somkiat
Viewing all articles
Browse latest Browse all 1997

[Robot Framework] การแก้ไขปัญหาการทดสอบระบบบน Firefox 48

$
0
0

ff-00

ff-00 วันนี้ทำการ update Firefox หลังจากที่ไม่ได้ update มานาน ๆ ๆ ๆ มาก ทำให้พบกับปัญหาการทดสอบระบบ web บน Firefox 48 ด้วย Robot Framework อาการที่พบเจอเป็นดังนี้ เปิด Firefox ขึ้นมาได้ แต่ไม่เข้าไปยัง url ที่ต้องการ บางครั้ง Firefox ก็ปิดตัวเองไปเลย งานเข้าสิครับ จะแก้ไขกันอย่างไรดีล่ะ ? แสดงผลการทำงานดังรูป ff-01 Error message เป็นดังนี้ [code] [ WARN ] Keyword 'Capture Page Screenshot' could not be run on failure: No browser is open WebDriverException: Message: Can't load the profile. Profile Dir: /var/folders/t5/8kg23s_97z9dw44tfc1d6dqw0000gn/T/tmp4y9Zfw/webdriver-py-profilecopy If you specified a log_file in the FirefoxBinary constructor, check it for details. [/code]

เริ่มจาก version ของ library ที่ใช้งานกันก่อน

  • Python 2.7
  • Robot Framework 3.0
  • Selenium2Library 1.8.0
  • Selenium 2.53.6

มาค้นหาต้นเหตุของปัญหากันหน่อย

ข้อมูลจาก Firefox developer อธิบายว่า ตั้งแต่ Firefox 47 เป็นต้นมานั้น ได้เปลี่ยน Firefox WebDriver ใหม่ชื่อว่า Marionette มีผลทำให้ Firefox WebDriver เดิมใน Selinium 2 ใช้งานไม่ได้นั่นเอง

มาแก้ไขปัญหากันดีกว่า

วิธีการนี้สำหรับคนหัวแข็ง ไม่ยอมทำการ update อะไรเลย ดังนั้นการแก้ไขจึงต้องทำเยอะหน่อยนะ !! มีขั้นตอนดังนี้ 1. ทำการ Download Geckodriver version 0.8.0 มาใช้งาน โดยทำการ download และ extract จากนั้นนำไปใส่ไว้ใน PATH ของระบบ 2. ทำการ run ชุดการทดสอบจะเจอ error ดังนี้ [code] WebDriverException: Message: 'wires' executable needs to be in PATH. [/code] ให้เปลี่ยนชื่อไฟล์จาก geckodriver เป็น wires ซะ !! 3. ยังไม่พอนะ ต้องแก้ไขใน script ของ Robot Framework ก่อนเปิด Browser เพื่อทดสอบดังนี้ [code] ${ff default caps} Evaluate sys.modules['selenium.webdriver'].common.desired_capabilities.DesiredCapabilities.FIREFOX sys,selenium.webdriver Set To Dictionary ${ff default caps} marionette=${True} Set To Dictionary ${ff default caps} binary=/Applications/Firefox.app/Contents/MacOS/firefox [/code] คำอธิบาย
  • ทำการกำหนด marionette ให้เป็น True คือเปิดการใช้งาน
  • binary คือ Path ของ Firefox นั่นเอง
เพียงเท่านี้ก็สามารถทดสอบได้แล้ววววว !!! ชีวิตดูลำบากมาก ๆ ว่าไหม ?

ถ้าไม่อยากแก้ไขปัญหาตามข้างต้น สามารถแก้ไขได้อีก 2 วิธีคือ

วิธีที่ 1 ใช้ Firefox ที่ต่ำกว่า version 47 สบาย ๆ วิธีที่ 2 ใช้งาน Selenium 3 beta ซะ เนื่องจากทำการปรับปรุงครั้งใหญ่  ตัวอย่างเช่น
  • ทำงานร่วมกับ Java 8 ได้
  • สนับสนุนการทำงานร่วมกับ Firefox ผ่าน Gecko Driver
  • สนับสนุนการทำงานร่วมกับ Safari ซึ่งใช้งานผ่าน Apple’s Safari Driver
  • สนับสนุนการทำงานร่วมกับ Edge ซึ่งใช้งานผ่าน Microsoft WebDriver
  • ส่วน IE 9 และ 10 ก็ยังทำงานได้อยู่ ส่วนต่ำกว่านั้นก็แล้วแต่เวรแต่กรรม ซึ่งใช้งานผ่าน InternetExplorerDriver
ดังนั้น update เถอะนะ [code] $pip install -U selenium==3.0.0b2 [/code] แต่เมื่อ run การทดสอบจะเกิด error ดังนี้ [code] WebDriverException: Message: 'geckodriver' executable needs to be in PATH. [/code] ดังนั้นนั้นให้ทำการ Download Geckodriver version 0.10.0 มาใช้งาน โดยทำการ download และ extract จากนั้นนำไปใส่ไว้ใน PATH ของระบบ เพียงเท่านี้ก็สามารถทดสอบระบบ web บน Firefox 48 ได้แล้ว
ส่วนผมเลือกวิธีใช้งาน Selenium 3 beta นะครับ

Viewing all articles
Browse latest Browse all 1997

Trending Articles