ดาวน์โหลด Geckodriver สำหรับ Firefox & Selenium

GeckoDriver คืออะไร Selenium?

คำว่า Gecko ย่อมาจาก Web Browser engine ที่ฝังอยู่ใน Mozilla Firefox เบราว์เซอร์ ไดรเวอร์ Gecko ทำหน้าที่เป็นพร็อกซีระหว่างไคลเอนต์ที่เปิดใช้งานไดรเวอร์เว็บEclipse, Netbeans ฯลฯ) และ Mozilla Firefox เบราว์เซอร์ กล่าวโดยย่อ ไดรเวอร์ Gecko ทำหน้าที่เป็นตัวเชื่อมโยงระหว่าง Selenium การทดสอบไดรเวอร์เว็บและ Mozilla Firefox เบราว์เซอร์

ก่อน Selenium 3, โมซิลลา Firefox เบราว์เซอร์เป็นเบราว์เซอร์เริ่มต้นสำหรับ Selenium. หลังจากที่ Selenium 3 ผู้ทดสอบจำเป็นต้องเริ่มต้นสคริปต์เพื่อใช้ Firefox ใช้ GeckoDriver อย่างชัดเจน Selenium ใช้โปรโตคอล W3C Webdriver เพื่อส่งคำขอไปยัง GeckoDriver ซึ่งแปลเป็นโปรโตคอลชื่อ Mariโอเน็ตต์ Firefox จะเข้าใจคำสั่งที่ส่งผ่านในรูปแบบของ Mariโปรโตคอล onette และดำเนินการ

GeckoDriver เข้ามาแล้ว Selenium

วิธีดาวน์โหลดและติดตั้ง GeckoDriver ใน Selenium

Gecko Driver สามารถดาวน์โหลดเป็นไฟล์ปฏิบัติการได้บนระบบ ต่อไปนี้คือรายการขั้นตอนในการดาวน์โหลดไดรเวอร์ Gecko

ขั้นตอนที่ 1 ) เลือกเวอร์ชันที่เหมาะสม
ที่หน้านี้ https://github.com/mozilla/geckodriver/releases เลือกเวอร์ชันที่เหมาะสมสำหรับการดาวน์โหลด GeckoDriver ตามระบบปฏิบัติการของคุณ

ดาวน์โหลดและติดตั้ง GeckoDriver ใน Selenium

ขั้นตอน 2) แตกไฟล์ ZIP
เมื่อการดาวน์โหลดไฟล์ ZIP เสร็จสิ้น ให้แตกเนื้อหาของไฟล์ ZIP ลงในโฟลเดอร์ไฟล์

ดาวน์โหลดและติดตั้ง GeckoDriver ใน Selenium

ขั้นตอน 3) สังเกตสถานที่
จดบันทึกตำแหน่งที่คุณแยกไดรเวอร์ ตำแหน่งดังกล่าวจะถูกใช้ในภายหลังเพื่อสร้างไดรเวอร์

ดาวน์โหลดและติดตั้ง GeckoDriver ใน Selenium

วิธีเริ่มต้น GeckoDriver

มีสามวิธีที่แตกต่างกันในการเริ่มต้น GeckoDriver

1. การใช้ DesiredCapabilities

ขั้นแรก ให้ตั้งค่าคุณสมบัติของระบบสำหรับ Gecko Driver

ไวยากรณ์:

System.setProperty("webdriver.gecko.driver","Path to geckdriver.exe file");

ตัวอย่าง:

System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");

ถัดไป ตั้งค่าความสามารถที่ต้องการ

ความสามารถที่ต้องการช่วยได้ Selenium เพื่อทำความเข้าใจชื่อเบราว์เซอร์ เวอร์ชัน และระบบปฏิบัติการในการดำเนินการทดสอบอัตโนมัติ ด้านล่างนี้คือโค้ดสำหรับตั้งค่าไดรเวอร์ Gecko โดยใช้คลาส DesiredCapabilities

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);

นี่คือรหัสที่สมบูรณ์

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver= new FirefoxDriver(capabilities);

2. การใช้คุณสมบัติของหุ่นกระบอก

สามารถเริ่มต้นไดรเวอร์ Gecko ได้โดยใช้คุณสมบัติหุ่นกระบอกดังต่อไปนี้

System.setProperty("webdriver.gecko.driver","D:\\Downloads\\GeckoDriver.exe");

หากเริ่มต้นไดรเวอร์ตุ๊กแกโดยใช้วิธีการข้างต้น รหัสสำหรับความสามารถที่ต้องการคือ ไม่ จำเป็นต้องใช้

3 ใช้ Firefox Options

Mozilla Firefox เวอร์ชัน 47+ มีไดรเวอร์ Marionette เป็นระบบเก่า การใช้ประโยชน์จากสิ่งนี้ทำให้สามารถเรียกใช้ไดรเวอร์ Marionette ได้โดยใช้ Firefox ตัวเลือกตามด้านล่างนี้

FirefoxOptions options = new FirefoxOptions();
options.setLegacy(true);

โค้ดสำหรับเปิด Firefox โดยใช้ไดรเวอร์ Gecko

package com.guru99.demo;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.DesiredCapabilities;

public class GeckoDriverDemo {

    String driverPath = "D:\\Guru99Demo\\GeckoDriver.exe";
    public WebDriver driver;

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", driverPath);
        DesiredCapabilities capabilities = DesiredCapabilities.firefox();
        capabilities.setCapability("marionette", true);
        driver = new FirefoxDriver(capabilities);

    }

    @Test
    public void navigateToUrl() {
        driver.get("https://demo.guru99.com/selenium/guru99home/");
    }

    @After
    public void endTest() {
        driver.quit();
    }

}

คำอธิบายรหัส

@ก่อนวิธี

ขั้นแรก เราต้องตั้งค่าคุณสมบัติของระบบสำหรับไดรเวอร์ gecko ไปยังตำแหน่งดาวน์โหลดไฟล์ geckdriver.exe เราต้องตั้งค่าคุณสมบัติของ marionette เป็น true สำหรับ Selenium ใช้ Mariโปรโตคอล onette เพื่อสื่อสารกับ Gecko Driver สุดท้ายนี้เราก็ต้องเริ่มต้นการ Firefox อินสแตนซ์เบราว์เซอร์ที่ใช้วัตถุสำหรับความสามารถที่ต้องการ

ข้อความด้านล่างช่วยให้บรรลุภารกิจข้างต้น

System.setProperty("webdriver.gecko.driver", driverPath);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette",true);
driver= new FirefoxDriver(capabilities);

@วิธีทดสอบ

เรากำลังนำทางไปยัง URL ที่ผู้ใช้ระบุโดยใช้วิธี "get" ในตัวที่จัดทำโดย Selenium ไดรเวอร์เว็บ ข้อความด้านล่างช่วยให้บรรลุเป้าหมายเดียวกัน

driver.get("https://demo.guru99.com/selenium/guru99home/");

@วิธีหลัง

สุดท้ายนี้ เรากำลังปิดอินสแตนซ์ของเบราว์เซอร์โดยใช้วิธีการออก

driver.quit();

แก้ไขสคริปต์ที่ไม่ใช่ตุ๊กแกเป็นตุ๊กแก

สคริปต์ไดรเวอร์ที่ไม่ใช่ตุ๊กแกเคยใช้มาก่อน Selenium 3 ตรงไปตรงมา เราจำเป็นต้องสร้างอินสแตนซ์ของ Firefox ไดรเวอร์และใช้ตัวแปรอินสแตนซ์

@Before
public void startBrowser() {
    driver = new FirefoxDriver();

}

หากต้องการแปลงเป็นตุ๊กแก คุณต้องเพิ่มโค้ดหนึ่งบรรทัด

    @Before
    public void startBrowser() {
        System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\GeckoDriver.exe");
        driver = new FirefoxDriver();

    }

มีข้อยกเว้นทั่วไปเกิดขึ้นขณะใช้ Gecko Driver

ต่อไปนี้เป็นรายการข้อยกเว้นทั่วไปที่เกิดขึ้นขณะใช้ Gecko Driver และมีความละเอียด

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

ความละเอียดสำหรับข้อยกเว้นข้างต้นคือการตั้งค่าคุณสมบัติระบบสำหรับไดรเวอร์ตุ๊กแกด้วยตำแหน่งของไฟล์ geckodriver.exe ดังต่อไปนี้

System.setProperty("webdriver.gecko.driver", "D:\\Downloads\\geckodriver.exe");

โปรดทราบว่าคุณต้องตั้งค่าคุณสมบัติของไดรเวอร์ตุ๊กแกก่อนที่จะสร้างอินสแตนซ์ของ Mozilla Firefox คนขับรถ

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms.

ข้อยกเว้นนี้มักจะเกิดขึ้นเมื่อ Firefox เวอร์ชันได้รับการอัปเกรดเป็นเวอร์ชันล่าสุดแล้ว การแก้ไขข้อยกเว้นนี้คือการอัปเดตไฟล์ jar ของ Selenium และไดรเวอร์ Gecko เป็นเวอร์ชันล่าสุดและใช้เวอร์ชันเดียวกัน

org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session.

ข้อยกเว้นนี้เกิดขึ้นเนื่องจากปัญหาความเข้ากันได้ระหว่าง Selenium และคนขับรถตุ๊กแก ไดรเวอร์ตุ๊กแกทำงานร่วมกับ Firefox เวอร์ชัน 47 ขึ้นไป สามารถแก้ไขได้ด้วยการอัพเดต Firefox เวอร์ชันถึง 47 หรือสูงกว่า

WebDriver Exception: Connection Refused

ข้อยกเว้นนี้เป็นข้อความที่เกิดขึ้นเมื่อไดรเวอร์เว็บไม่สามารถสร้างการเชื่อมต่อได้ Firefox. สามารถแก้ไขได้โดยใช้เทคนิคใดเทคนิคหนึ่งต่อไปนี้

  • ใช้ driver.quit() วิธีการทำลายอินสแตนซ์ของไดรเวอร์เว็บก่อนหน้านี้
  • ทำความสะอาดแคชของเบราว์เซอร์ก่อนดำเนินการทดสอบอัตโนมัติ
  • ทำความสะอาดพื้นที่ทำงานของโครงการภายใน Eclipse IDE
  • ใช้ไดรเวอร์ selenium gecko เวอร์ชันล่าสุดเสมอและเวอร์ชันล่าสุดของ Firefox เบราว์เซอร์

ข้อดีของการใช้ Gecko Driver

Selenium Webdriver เวอร์ชัน 2.53 เข้ากันไม่ได้กับ Mozilla Firefox เวอร์ชัน 47.0+ ที่ Firefox ไดรเวอร์ที่ใช้ใน Mozilla เวอร์ชันก่อนหน้า Firefox จะถูกยกเลิก และจะใช้เฉพาะการใช้งาน GeckoDriver เท่านั้น ดังนั้นผู้ทดสอบจึงถูกบังคับให้ใช้ GeckoDriver หากต้องการรันการทดสอบอัตโนมัติบน Mozilla Firefox เวอร์ชัน 47.0+ แต่คำถามใหญ่ – อะไรคือข้อได้เปรียบ?

ข้อได้เปรียบที่สำคัญของการใช้ GeckoDriver เมื่อเทียบกับค่าเริ่มต้น Firefox ไดรเวอร์คือ ความเข้ากันได้- GeckoDriver ใช้ โปรโตคอล W3C WebDriver ที่จะสื่อสารกับ Selenium- W3C เป็นมาตรฐานสากลสำหรับ Web Driver นี่หมายความว่า Selenium นักพัฒนา (ผู้ที่เขียนโค้ด Selenium base) ไม่จำเป็นต้องสร้าง Web Driver เวอร์ชันใหม่สำหรับเบราว์เซอร์แต่ละเวอร์ชัน Web Driver เดียวกันนี้สามารถใช้ได้กับเบราว์เซอร์หลายเวอร์ชัน ดังนั้น GeckoDriver จึงเป็นที่นิยมมากกว่าเมื่อเปรียบเทียบกับการใช้งานก่อนหน้าของ Firefox คนขับรถ