Загрузка хрома с использованием селена
Все, что я хочу, - загрузить хром-расширение из интернет-магазина.
Я много ищу, чтобы понять это, но только узнал, что мы можем загрузить расширение с локальной машины.
Мне действительно интересно, не имеет ли селена функциональность для загрузки расширения из интернет-магазина или из URL-адреса.
Пожалуйста, дайте мне знать, что я могу попробовать, используя селен?
Ответы
Ответ 1
Я не уверен, почему вы особенно относитесь к загрузке с Web-магазина, а затем установите в Chrome.
Я нашел несколько шагов для загрузки chrome-расширений:
-В компьютере, подключенном к Интернету, установите расширение со страницы расширения: https://chrome.google.com/webstore/detail/
-Найдите в исходный код расширения. В XP это можно найти по адресу: C:\Documents and Settings\\Локальные настройки\Данные приложения\Google\Chrome\Пользовательские данные\По умолчанию\Расширения\
-Вы должны увидеть папку с версией (то есть "0.0.21_0" ). Скопируйте эту папку и переместите ее на машину, которую вы хотите установить.
-Открыть хром на отключенной машине и перейти к гаечному ключу → Инструменты → Расширения
-Нажмите "+" рядом с режимом "Разработчик", чтобы отобразить параметры разработчика
-Нажмите "Расширение пакета..." и выберите папку версии в качестве корневого каталога. Оставьте файл закрытого ключа пустым. Это создаст файл .crx в папке версии вместе с закрытым ключом, как если бы вы были разработчиком.
- Или -
1- Найдите идентификатор расширения, которое вас интересует. Когда на странице сведений о расширении это будет что-то вроде: bfbmjmiodbnnpllbbbfblcplfjjepjdn
после https://chrome.google.com/webstore/detail/
2- Вставьте это в любой другой браузер (а не в Chrome):
https://clients2.google.com/service/update2/crx?response=redirect&x=id%3D~~~~%26uc
3- и заменив ~~~~ идентификатором расширения.
Вам будет предложено сохранить файл CRX. Перетащите этот файл в окно Chrome и продолжайте установку.
Источник: https://productforums.google.com/forum/#!topic/chrome/g02KlhK12fU
Наконец, используйте загруженный .crx файл в ChromeOptions для загрузки расширения
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);
Источник: https://sites.google.com/a/chromium.org/chromedriver/extensions
Ответ 2
Я сделал это с Python на тот случай, если кто-то ищет.
Все, что вам нужно сделать, это загрузить файл .crx (я использовал https://chrome-extension-downloader.com/) и сохранить его где-нибудь, чтобы Python мог получить к нему доступ. В моем примере я импортировал его в ту же папку, что и мой скрипт Python, чтобы загрузить exampleOfExtensionDownloadedToFolder.crx.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = webdriver.ChromeOptions()
options.add_extension('./exampleOfExtensionDownloadedToFolder.crx')
driver = webdriver.Chrome(chrome_options=options)
driver.get('http://www.google.com')
Ответ 3
-
Поместите хромированный exe в файл документа, если вы хотите следовать этому и иметь успешный результат.
-
Загрузите расширение GET CRX из Google.
-
Загрузите расширение (т.е. мое - "DHS" для тестирования API Rest).
-
Перейдите в Интернет-магазин Chrome → найдите расширение (тот, который вы уже загрузили) → щелкните правой кнопкой мыши по нему и нажмите:: GET CRX
(Это должно загрузить файл CRX. Для моего случая CRX файл является "extension_1_2_5.crx" )
-
Отбросьте файл CRX в любом окне Chrome (это может отменить его, но не стоит беспокоиться).
-
Теперь создайте свой тест и выполните
public static void openChromeExtension(){
System.setProperty("webdriver.chrome.driver", "/Users/[your local name]/Documents/chromedriver");
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("/Users/[your local name]/Documents/extension_1_2_5.crx"));
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
ChromeDriver driver = new ChromeDriver(capabilities);
System.out.println("Opening extension");
driver.get("chrome-extension://**aejoelaoggembcahagimdiliamlcdmfm**/dhc.html");
driver.navigate().refresh();
System.out.println("Refresh successfully");
}
//это URL-адрес расширения, или вы можете получить идентификатор на chrome://расширения/найти расширение и скопировать ID. Однако URL-адрес должен быть URL-адресом расширения.
Ответ 4
Не знаю, почему, но кто-то удалил их ответ, что было правильно. Вот содержание (получено из @parishodak):
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);
Этот конкретный пример представлен в Java
Ответ 5
using System.IO;
using System.IO.Compression;
public static class ChromeExtension
{
public static string Execute()
{
var ParentPath = Directory.GetParent(Directory.GetCurrentDirectory()).Parent;
var DirectoryPath = ParentPath.FullName.Remove(ParentPath.FullName.IndexOf(ParentPath.Name));
string startPath = $"{DirectoryPath}\\Exchanger\\ChromeExtension";
string zipPath = $"{DirectoryPath}Exchanger\\Extension.zip";
if (System.IO.File.Exists(zipPath))
{
System.IO.File.Delete(startPath);
}
ZipFile.CreateFromDirectory(startPath, zipPath);
if (System.IO.File.Exists($"{DirectoryPath}\\Exchanger\\Extension.crx"))
{
System.IO.File.Delete($"{DirectoryPath}\\Exchanger\\Extension.crx");
}
System.IO.File.Move(zipPath, $"{DirectoryPath}\\Exchanger\\Extension.crx");
return $"{DirectoryPath}\\Exchanger\\Extension.crx";
}
}
....////....
Used:
var options = new ChromeOptions();
options.AddExtension(ChromeExtension.Execute());
....////....
Ответ 6
Вышеупомянутые решения, хотя технически звучат, не всегда работают так, как предполагалось, поэтому я подумал о другом способе этого.
Потому что много раз мне нужно много вещей, которые лучше делать вручную, аутентификации, определенные файлы cookie и т.д.
Я использую папки в качестве профилей, я запускаю:
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com")
Затем я вручную устанавливаю расширения и выполняю логины, которые мне нужны сейчас, каждый раз, когда я запускаю Webdriver с этой папкой, все есть
chrome_options = Options()
chrome_options.add_argument("user-data-dir=selenium")
driver = webdriver.Chrome(chrome_options=chrome_options)
driver.get("www.google.com") #Now you can see the Extensions and the logins done are present
Преимущество заключается в том, что вы можете использовать несколько папок с разными настройками и расширениями без необходимости устанавливать и удалять расширения, изменять настройки, изменять логины и т.д.
Ответ 7
Для автоматизации расширений Chrome необходимо использовать настольное решение для тестирования пользовательского интерфейса. Чистое решение для веб-тестирования, такое как Selenium, не может автоматизировать надстройки браузера, так как не имеет к ним доступа.
-
Sikuli - хороший вариант для автоматизации. Соскребание экрана доступно, если вы добавите Tesseract.
-
UI.Vision - это еще один хороший инструмент, который включает в себя встроенную очистку экрана (если вам нужно получить текст из пользовательского интерфейса). Он запускается непосредственно в веб-браузере, см. Этот пост на форуме о том, как автоматизировать расширение Chrome с его помощью.