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:
[code language=”java” autolinks=”true”]
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();
}
}
[/code]
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
https://www.youtube.com/watch?v=hv77Glncl7A
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ế
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.
a ơi cho e hỏi làm thế nào để sửa lỗi khi nó báo org.openqa.selenium.firefox.NotConnectedException
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).
dạ em cảm ơn nhưng giờ nó lại báo import org.openqa.selenium.WebDriver is never used ạ