8

Tôi đang sử dụng Selenium WebDriver để kiểm tra tiện ích Google Chrome mà tôi đang phát triển. Tôi nhận thấy rằng ChromeDriver có thể được tùy chỉnh để thêm tiện ích mở rộng vào phiên bản Chrome mà nó khởi chạy. Điều này có thể đạt được bằng cách sử dụng các phương pháp AddExtensionAddExtensions của lớp ChromeOptions.Tôi làm cách nào để khởi chạy Chrome bằng tiện ích mở rộng được giải nén?

Tài liệu cho các phương pháp này cho thấy rằng chúng yêu cầu tiện ích mở rộng được cung cấp dưới dạng tệp crx. Vì Tôi đang phát triển tiện ích mở rộng, tôi không có tệp crx. Tôi muốn có thể tải phần mở rộng được giải nén, nhưng tôi không thể tìm thấy một phương pháp để làm điều này.

Tôi đã thử đặt các tệp mở rộng vào tệp zip và chỉ định phương thức này cho phương thức AddExtension, nhưng điều này gây ra một ngoại lệ xảy ra vì nó không phải là tệp crx. Tôi cũng đã thử chuyển vào thư mục chứa các tệp chưa giải nén, nhưng điều này đã tạo ra một FileNotFoundException.

Tôi làm cách nào để thực hiện việc này?

+1

Tôi không biết tất cả những điều này có nghĩa là gì, nhưng tôi đã bình chọn câu trả lời của bạn, bởi vì nó thực sự có vẻ như thông tin hữu ích. –

Trả lời

13

Tôi có thể đạt được điều này bằng cách sử dụng phương thức AddArgument để chuyển trực tiếp thông tin đến Chrome. Đây là những gì nó trông giống như trong C#:

options = new ChromeOptions(); 
options.AddArgument("--load-extension=" + unpackedExtensionPath); 
-1

Các tài liệu Selenium có một ví dụ như thế này cho một (không giải nén) mở rộng đóng gói:

capabilities.setCapability("platform", "Windows 8"); 
capabilities.setCapability("version", "10"); 
capabilities.setCapability("name", testname); 
capabilities.setCapability("screen-resolution", "1280x1024"); 
ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
if (isLocal) driver = new ChromeDriver(capabilities); 
+1

'addExtensions' dường như yêu cầu tệp * crx *, biểu thị phần mở rộng * được đóng gói * chứ không phải tệp mở rộng. – Sam

1

Đối với phần mở rộng đóng gói (một file .crx)

ChromeOptions options = new ChromeOptions(); 
options.addExtensions(new File("/path/to/extension.crx")); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

Đối với phần mở rộng giải nén (thư mục)

ChromeOptions options = new ChromeOptions(); 
options.addArguments("load-extension=/path/to/extension"); 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(ChromeOptions.CAPABILITY, options); 
ChromeDriver driver = new ChromeDriver(capabilities); 

source

+0

Tùy chọn thứ hai sẽ chỉ hoạt động đối với Selenium cục bộ dưới dạng '/ path/to/extension' sẽ không khả dụng từ xa. – Vladimir

1

Các lỗi phần mở rộng giải nén popped lên cho tôi và tôi yêu cầu để loại bỏ các hạn chế trong chrome được thi hành như chính sách của tổ chức. Một khi các hạn chế đã được gỡ bỏ, tôi có thể chạy chương trình với bất kỳ lỗi nào. ChromeBrowser-GPO-Deny - đây là cái đã bị xóa. Bạn có thể kiểm tra trong Cài đặt - Tiện ích mở rộng - Kiểm tra chế độ Nhà phát triển và xem liệu các tiện ích mở rộng tải đã giải nén có được kiểm tra hay không sau khi các hạn chế được xóa. Bạn nên tốt sau đó. Tất cả những điều trên sẽ chỉ hoạt động khi Chrome không bị hạn chế.

Các vấn đề liên quan