[Java – WebDriver 12] – Thêm extensions vào các trình duyệt mặc định

Thông thường khi chúng ta chạy automation, sau khi trình duyệt được khởi tạo thì mặc định các extensions sẽ không được thêm vào. Để làm điều này, chúng ta cần tải về phiên bản offline của extension và add trực tiếp vào trình duyệt lúc khởi tạo

  • Thêm plugin chặn quảng cáo vào trình duyệt để load app nhanh hơn
  • Thêm plugin ChroPath vào trình duyệt để locate element trong trường hợp test fail

Ví dụ: Tải về extension là Google translate bản offline cho trình duyệt Chrome

1 – Truy cập vào website Chrome Web Store, search và lấy đường link của extension Google translate

2 – Truy cập vào website Chrome Extension Download, dán đường link của extension Google translate và tải về máy


Firefox:

FirefoxProfile profile = new FirefoxProfile();
 //File .xpi là định dạng extesion của trình duyệt Firefox
 File extension = new File("Extension.xpi");
 profile.addExtension(extension);
 WebDriver driver = new FirefoxDriver(profile);

Chrome:

System.setProperty("webdriver.chrome.driver","..\chromedriver.exe");
 //File .crx hoặc .zip là định dạng extesion của trình duyệt Chrome
 File file = new File("Extension.crx");
 ChromeOptions options = new ChromeOptions();
 options.addExtensions(file);
 WebDriver driver = new ChromeDriver(options);

Safari:

File file = new File("Extension.safariextz");
 //File .safariextz là định dạng extesion của trình duyệt Safari
 SafariOptions options = new SafariOptions();
 options.addExtensions(file);
 WebDriver driver = new SafariDriver(options);

Opera:

OperaProfile operaProfile = new OperaProfile();
 //File .oex là định dạng extesion của trình duyệt Opera
 File file = new File("C:\Extension.oex");
 operaProfile.addExtension(file);
 WebDriver driver = new OperaDriver(operaProfile);

Source demo:

import java.io.File;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.safari.SafariDriver;
import org.openqa.selenium.safari.SafariOptions;
import org.testng.annotations.Test;
import com.opera.core.systems.OperaDriver;
import com.opera.core.systems.OperaProfile;

public class WebDriver02_AddExtensions {

@Test
 public void TC_01_AddExtensionToFirefox() throws Exception {
 FirefoxProfile profile = new FirefoxProfile();
 //File .xpi là định dạng extesion của trình duyệt Firefox
 File extension = new File("\11-AutomationTestingDemo\lib\firebug-2.0.1.xpi");
 profile.addExtension(extension);
 WebDriver driver = new FirefoxDriver(profile);
 driver.navigate().to("http://google.com.vn");
 driver.quit();
 }

@Test
 public void TC_02_AddExtensionToChrome(){
 System.setProperty("webdriver.chrome.driver","\11-AutomationTestingDemo\lib\chromedriver.exe");
 //File .crx hoặc .zip là định dạng extesion của trình duyệt Chrome
 File file = new File("\11-AutomationTestingDemo\lib\Google-Translate_v2.0.4.crx");
 ChromeOptions options = new ChromeOptions();
 options.addExtensions(file);
 WebDriver driver = new ChromeDriver(options);
 driver.navigate().to("http://google.com.vn");
 driver.quit();
 }

@Test
 public void TC_03_AddExtensionToSafari(){
 File file = new File("Extension.safariextz");
 //File .safariextz là định dạng extesion của trình duyệt Safari
 SafariOptions options = new SafariOptions();
 options.addExtensions(file);
 WebDriver driver = new SafariDriver(options);
 driver.navigate().to("http://google.com.vn");
 driver.quit();
 }

@Test
 public void TC_04_AddExtensionToOpera() throws Exception{
 OperaProfile operaProfile = new OperaProfile();
 //File .oex là định dạng extesion của trình duyệt Opera
 File file = new File("C:\Extension.oex");
 operaProfile.addExtension(file);
 WebDriver driver = new OperaDriver(operaProfile);
 driver.navigate().to("http://google.com.vn");
 driver.quit();
 }
 }

Video demo

Trên máy chỉ có sẵn firefox và chrome nên mình chỉ chạy demo cho 2 trình duyệt này

 

5 thoughts on “[Java – WebDriver 12] – Thêm extensions vào các trình duyệt mặc định

  1. Chào bạn,
    Ở bài này mình có một số thắc mắc, mong bạn giải đáp giúp mình

    Đây là đoạn code mình sửa trên máy của mình

    1. Mình thấy trong code của bạn phần khai báo extension path: khá ngắn gọn.
    – Mình để file ở đây: D:\JAVA SOURCES\Selenium Tutorials\lib\firebug-2.0.19-fx.xpi
    – Mình khai báo path:
    File extension = new File(“Selenium Tutorials\\lib\\firebug-2.0.19-fx.xpi”);
    ==> Result:
    org.openqa.selenium.WebDriverException: Unable to convert: Capabilities [{moz:firefoxOptions={binary=Optional.empty, args=[], legacy=false, logLevel=null, prefs={}, profile=org.openqa.selenium.firefox.FirefoxProfile@175c2241}, firefox_profile=org.openqa.selenium.firefox.FirefoxProfile@175c2241}]

    Caused by: java.io.FileNotFoundException: Selenium Tutorials\lib\firebug-2.0.19-fx.xpi (The system cannot find the path specified)

    – Nếu mình thay path là:
    File extension = new File(“D:\\JAVA SOURCES\\Selenium Tutorials\\lib\\firebug-2.0.19-fx.xpi”);

    ==> Result: PASSED

    Bây giờ mình muốn khai báo ngắn gọn path nằm trong project có được hay không?

    2. Mình thấy trong code của bạn có throws Exception có vai trò gì?

    3. Mỗi khi Run class thì trình duyệt Firefox khá lâu mới bật cửa sổ lên, xin hỏi là do mình config hay là do eclipse làm việc như thế

    Like

    1. 1. Path
      – đường dẫn tuyệt đối: D:\\JAVA SOURCES\\Selenium Tutorials\\lib\\firebug-2.0.19-fx.xpi (chỉ chạy được tại máy bạn)
      – đường dẫn tương đối: ..\\Selenium Tutorials\\lib\\firebug-2.0.19-fx.xpi (nó chạy tốt nếu đưa qua máy khác or trên cloud)
      2. Phần này xử lí ngoại lệ, nếu chương trình gián đoạn thì throw ra cho dễ debug hoặc tìm lỗi. Trong selenium thì thường có 1 số exception như: No such element, element not found, not visible…
      Bạn xem thêm về exception trong link: https://seleniumhq.github.io/selenium/docs/api/py/common/selenium.common.exceptions.html
      3. Check lại môi trường tương thích xem nhé hoặc cấu hình máy bạn chưa đủ mạnh.

      Like

  2. a ơi cho e hỏi làm thế nào để sửa lỗi khi nó báo org.openqa.selenium.firefox.NotConnectedException

    Like

    1. Lỗi này do version của Selenium và trình duyệt Firefox nó không tương thích với nhau đó em. E thử dùng Selenium version 2.53.1 và Firefox 47 xem nhé (bản này dc đánh giá là ổn định).

      Like

      1. dạ em cảm ơn nhưng giờ nó lại báo import org.openqa.selenium.WebDriver is never used ạ

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s